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

This commit is contained in:
Oleksandr Hryshchenko 2021-03-18 17:52:35 +00:00
parent 9663d8a086
commit 64d09b6c45

View File

@ -6,6 +6,7 @@
int main() {
char* input = (char*) calloc(11, sizeof(char));
char numbers[4];
char* ptr;
int date[3] = {0,0,0};
int counter1 = 0, counter2 = 0;
@ -15,20 +16,14 @@ 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;
truth = 1;
}
if(input[i] != '.' && input[i] != '\n' && input[i] != '\0'){
numbers[counter1++] = input[i];
}
else {
date[counter2++] = atoi(numbers);
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){
date[counter2++] = (int)strtol(numbers, &ptr, 10);
if((counter2 == 1 && (date[0] < 1 || date[0] > 31)) || (counter2 == 2 && (date[1] < 1 || date[1] > 12)) || (counter2 == 2 && date[0] > 29)){
goto LABEL;
}
else if (counter2 == 3){
@ -53,11 +48,12 @@ for (int j = 0; fgets(input, 11, stdin) != NULL; j++){
date[0] -= 28;
date[1]++;
}
//date[2] /= 100;
printf("%d.%d.%d\n\n", date[0], date[1], date[2]);
break;
}
memset(numbers, '\0', 4);
counter1 = 0;
memset(numbers, '\0', 4);
}
}
memset(input, '\0', 11);
@ -65,8 +61,8 @@ for (int j = 0; fgets(input, 11, stdin) != NULL; j++){
counter1 = 0, counter2 = 0;
memset(numbers, '\0', 4);
}
LABEL:
if(truth) puts("Neplatny datum");
return 0;
}