diff --git a/du3/program.c b/du3/program.c index f9e4d6d..9a6d8f4 100644 --- a/du3/program.c +++ b/du3/program.c @@ -1,4 +1,3 @@ - #include #include #include @@ -13,60 +12,60 @@ int main() { 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'){ - goto LABEL; - } + 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'){ + 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; + if(input[i] != '.' && input[i] != '\n' && input[i] != '\0'){ + numbers[counter1++] = input[i]; } - 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){ - 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]++; + 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){ + 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; } - 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; } - memset(numbers, '\0', 4); - counter1 = 0; } + memset(input, '\0', 11); + date[0] = 0, date[1] = 0, date[2] = 0; + counter1 = 0, counter2 = 0; + memset(numbers, '\0', 4); } - memset(input, '\0', 11); - date[0] = 0, date[1] = 0, date[2] = 0; - counter1 = 0, counter2 = 0; - memset(numbers, '\0', 4); -} LABEL: if(truth) puts("Neplatny datum");