#include #include #include #include int main() { char* input = (char*) calloc(11, sizeof(char)); char numbers[4] = "\0\0\0\0"; char* ptr; int date[3] = {0, 0, 0}; int counter1 = 0, counter2 = 0; int truth = 0; for (int j = 0; fgets(input, 11, stdin) != NULL; j++){ for(int i = 0; i < 11; i++){ if(!isdigit(input[i]) && input[i] != '.' && input[i] != '\0' && input[i] != '\n'){ puts("Neplatny datum."); goto LABEL; } if(input[i] != '.' && input[i] != '\n' && input[i] != '\0'){ numbers[counter1++] = input[i]; } else { date[counter2++] = (int) strtol(numbers, &ptr, 10); if(counter2 == 1 && (date[0] < 1 || date[0] > 31)){ //goto LABEL; } else if(counter2 == 2 && (date[1] < 1 || date[1] > 12)){ //goto LABEL; } /*else if(counter2 == 2 && date[0] > 29){ //goto LABEL; }*/ else if (counter2 == 3){ if(date[2] <1) goto LABEL; date[0] += 7; if(date[0] > 31 && (date[1] == 1 || date[1] == 3 || date[1] == 5 || date[1] == 7 || date[1] == 8 || date[1] == 10 || date[1] == 12)){ date[0] -= 31; date[1]++; if(date[1] > 12){ date[1] = 1; date[2]++; } } if(date[0] > 30 && (date[1] == 4 || date[1] == 6 || date[1] == 9 || date[1] == 11)){ date[0] -= 30; date[1]++; } if(date[0] > 29 && date[1] == 2 && date[2] % 4 == 0 && (date[2] % 100 != 0 || (date[2] %100 == 0 && date[2] % 400 == 0))){ date[0] -= 29; date[1]++; } else if(date[0] > 28 && date[1] == 2){ date[0] -= 28; date[1]++; } printf("%d.%d.%d\n\n", date[0], date[1], date[2]); break; } memset(numbers, '\0', 4); counter1 = 0; } } if(isdigit(input[9])) getchar(); LABEL: memset(input, '\0', 11); date[0] = 0, date[1] = 0, date[2] = 0; counter1 = 0, counter2 = 0; memset(numbers, '\0', 4); } free(input); return 0; }