Изменить 'du3/program.c'

This commit is contained in:
Oleksandr Hryshchenko 2021-03-18 18:07:46 +00:00
parent 8de28a8dca
commit ec654e7f4c

View File

@ -1,4 +1,3 @@
#include <stdio.h> #include <stdio.h>
#include <ctype.h> #include <ctype.h>
#include <stdlib.h> #include <stdlib.h>
@ -13,60 +12,60 @@ int main() {
int truth = 0; int truth = 0;
for (int j = 0; fgets(input, 11, stdin) != NULL; j++){ for (int j = 0; fgets(input, 11, stdin) != NULL; j++){
for(int i = 0; i < 11; i++){ for(int i = 0; i < 11; i++){
if(!isdigit(input[i]) && input[i] != '.' && input[i] != '\0' && input[i] != '\n'){ if(!isdigit(input[i]) && input[i] != '.' && input[i] != '\0' && input[i] != '\n'){
goto LABEL; goto LABEL;
} }
if(input[i] != '.' && input[i] != '\n' && input[i] != '\0'){ if(input[i] != '.' && input[i] != '\n' && input[i] != '\0'){
numbers[counter1++] = input[i]; 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)){ else {
//goto LABEL; date[counter2++] = (int) strtol(numbers, &ptr, 10);
} if(counter2 == 1 && (date[0] < 1 || date[0] > 31)){
else if(counter2 == 2 && date[0] > 29){ //goto LABEL;
//goto LABEL; }
} else if(counter2 == 2 && (date[1] < 1 || date[1] > 12)){
else if (counter2 == 3){ //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)){ /*else if(counter2 == 2 && date[0] > 29){
date[0] -= 31; //goto LABEL;
date[1]++; }*/
if(date[1] > 12){ else if (counter2 == 3){
date[1] = 1; date[0] += 7;
date[2]++; 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)){ memset(numbers, '\0', 4);
date[0] -= 30; counter1 = 0;
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(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: LABEL:
if(truth) puts("Neplatny datum"); if(truth) puts("Neplatny datum");