From 212423b7d93591121dd577d723c9d048557ef567 Mon Sep 17 00:00:00 2001 From: Yaroslav Orlianskyi Date: Thu, 31 Mar 2022 09:56:39 +0000 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB(?= =?UTF-8?q?=D0=B0)=20=D0=BD=D0=B0=20'a1/program.c'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- a1/program.c | 390 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 238 insertions(+), 152 deletions(-) diff --git a/a1/program.c b/a1/program.c index 486f917..aaa5047 100644 --- a/a1/program.c +++ b/a1/program.c @@ -2,30 +2,42 @@ #include #include #include - -int main(){ - char riadok[499][499]; - int i, o , need = 0; +int main() +{ + char riadok[999][999]; + int i = 0; + int o = 0; + int need = 0; bool first; - while (1){ + while (1) + { o = 0; - while (1){ + while (1) + { + riadok[i][o] = getchar(); - if (riadok[i][o] == '\n'){ + + if (riadok[i][o] == '\n') + { first = true; need++; break; } + o++; } - if (first == true && riadok[i][0] == '\n'){ + if (first == true && riadok[i][0] == '\n') + { break; } i++; } - for (int j = 0; j < need - 1; j++){ - for (int g = 0; g < strlen(riadok[j]); g++){ - if (riadok[j][g] != '.' && riadok[j][g] != '1' && riadok[j][g] != '2' && riadok[j][g] != '3' && riadok[j][g] != '4' && riadok[j][g] != '5' && riadok[j][g] != '6' && riadok[j][g] != '7' && riadok[j][g] != '8' && riadok[j][g] != '9' && riadok[j][g] != '0' && riadok[j][g] != '\n' && riadok[j][g] != '\0'){ + for (int j = 0; j < need - 1; j++) + { + for (int g = 0; g < strlen(riadok[j]); g++) + { + if (riadok[j][g] != '.' && riadok[j][g] != '1' && riadok[j][g] != '2' && riadok[j][g] != '3' && riadok[j][g] != '4' && riadok[j][g] != '5' && riadok[j][g] != '6' && riadok[j][g] != '7' && riadok[j][g] != '8' && riadok[j][g] != '9' && riadok[j][g] != '0' && riadok[j][g] != '\n' && riadok[j][g] != '\0') + { riadok[j][0] = '9'; riadok[j][1] = '.'; riadok[j][2] = '9'; @@ -38,12 +50,16 @@ int main(){ } } i = 0; - for (int j = 0; j < need - 1; j++){ + for (int j = 0; j < need - 1; j++) + { i = 1; - for (int g = 0; g < strlen(riadok[j]); g++){ - if ((riadok[j][g] == '1' && riadok[j][g] == '2' && riadok[j][g] == '3' && riadok[j][g] == '4' && riadok[j][g] == '5' && riadok[j][g] == '6' && riadok[j][g] == '7' && riadok[j][g] == '8' && riadok[j][g] == '9' && riadok[j][g] == '0' && riadok[j][g] == '\0')){ + for (int g = 0; g < strlen(riadok[j]); g++) + { + if ((riadok[j][g] == '1' riadok[j][g] == '2' riadok[j][g] == '3' riadok[j][g] == '4' riadok[j][g] == '5' riadok[j][g] == '6' riadok[j][g] == '7' riadok[j][g] == '8' riadok[j][g] == '9' riadok[j][g] == '0' riadok[j][g] == '\0')) + { i++; - if (strlen(riadok[j]) == i){ + if (strlen(riadok[j]) == i) + { riadok[j][0] = '9'; riadok[j][1] = '.'; riadok[j][2] = '9'; @@ -56,8 +72,11 @@ int main(){ } } } - for (int j = 0; j < need - 1; j++){ - if (riadok[j][0] == '0'){ + + for (int j = 0; j < need - 1; j++) + { + if (riadok[j][0] == '0') + { riadok[j][0] = '9'; riadok[j][1] = '.'; riadok[j][2] = '9'; @@ -67,9 +86,13 @@ int main(){ riadok[j][6] = '\0'; } } - for (int j = 0; j < need - 1; j++){ - for (int g = 0; g < strlen(riadok[j]); g++){ - if (riadok[j][g] == '0' && riadok[j][g - 1] == '.'){ + + for (int j = 0; j < need - 1; j++) + { + for (int g = 0; g < strlen(riadok[j]); g++) + { + if (riadok[j][g] == '0' && riadok[j][g - 1] == '.') + { riadok[j][0] = '9'; riadok[j][1] = '.'; riadok[j][2] = '9'; @@ -80,14 +103,19 @@ int main(){ } } } - char riadok1[499]; + + char riadok1[999]; i = 0; - for (int j = 0; j < need - 1; j++){ - for (int g = 0; g < strlen(riadok[j]); g++){ - if (riadok[j][g] == '\n'){ + for (int j = 0; j < need - 1; j++) + { + for (int g = 0; g < strlen(riadok[j]); g++) + { + if (riadok[j][g] == '\n') + { riadok[j][g] = '.'; } - if (riadok[j][g] != '\0'){ + if (riadok[j][g] != '\0') + { riadok1[i] = riadok[j][g]; i++; } @@ -96,163 +124,221 @@ int main(){ riadok1[i] = '\0'; int len = strlen(riadok1); int s = 0; - for (int j = 0; j < len; j++){ - if (riadok1[j] == '.'){ + for (int j = 0; j < len; j++) + { + if (riadok1[j] == '.') + { s++; } } char *endptr = NULL; char *start = riadok1; - int number[s]; + int cisla[s]; i = 0; - while (start < (riadok1 + len)){ - number[i] = strtol(start, &endptr, 10); - if (number[i]) + while (start < (riadok1 + len)) + { + cisla[i] = strtol(start, &endptr, 10); + if (cisla[i]) + { start = endptr + 1; + } else + { break; + } i++; } - need = 0; - for (int j = 0; j < s; j = j + 3){ - if (number[j + 1] > 12 || number[j + 1] < 0 || number[j] < 1 || number[j] > 31 || number[j + 2] < 1900 || number[j + 2] > 2100){ - number[j] = 0; - number[j + 1] = 0; - number[j + 2] = 0; - need++; - } - } - for (int j = 0; j < s; j = j + 3){ - if (number[j + 1] == 2 && number[j] == 29 && number[j + 2] % 4 != 0) { - number[j] = 0; - number[j + 1] = 0; - number[j + 2] = 0; - need++; - } - } - for (int j = 0; j < s; j = j + 3){ - if (number[j + 1] == 1 && number[j] > 0 && number[j] <= 31){ - if (number[j] <= 24) - number[j] = number[j] + 7; - else if (number[j] > 24){ - number[j] = number[j] + 7 - 31; - number[j + 1]++; - } - } - else if (number[j + 1] == 2 && number[j] > 0 && number[j] <= 28 && number[j + 2] % 4 != 0){ - if (number[j] <= 21){ - number[j] = number[j] + 7; - } - else if (number[j] > 21){ - number[j] = number[j] + 7 - 28; - number[j + 1]++; - } - } - else if (number[j + 1] == 2 && number[j] > 0 && number[j] <= 29 && number[j + 2] % 4 == 0){ - if (number[j] <= 22){ - number[j] = number[j] + 7; - } - else if (number[j] > 22){ - number[j] = number[j] + 7 - 29; - number[j + 1]++; - } - } - else if (number[j + 1] == 3 && number[j] > 0 && number[j] <= 31){ - if (number[j] <= 24){ - number[j] = number[j] + 7; - } - else if (number[j] > 24){ - number[j] = number[j] + 7 - 31; - number[j + 1]++; - } - } - else if (number[j + 1] == 4 && number[j] > 0 && number[j] <= 30){ - if (number[j] <= 23){ - number[j] = number[j] + 7; - } - else if (number[j] > 23){ - number[j] = number[j] + 7 - 30; - number[j + 1]++; - } - } - else if (number[j + 1] == 5 && number[j] > 0 && number[j] <= 31){ - if (number[j] <= 24){ - number[j] = number[j] + 7; - } - else if (number[j] > 24){ - number[j] = number[j] + 7 - 31; - number[j + 1]++; - } - } - else if (number[j + 1] == 6 && number[j] > 0 && number[j] <= 30){ - if (number[j] <= 23){ - number[j] = number[j] + 7; - } - else if (number[j] > 23){ - number[j] = number[j] + 7 - 30; - number[j + 1]++; - } - } - else if (number[j + 1] == 7 && number[j] > 0 && number[j] <= 31){ - if (number[j] <= 24){ - number[j] = number[j] + 7; - } - else if (number[j] > 24){ - number[j] = number[j] + 7 - 31; - number[j + 1]++; + need = 0; + for (int j = 0; j < s; j = j + 3) + { + if (cisla[j + 1] > 12 cisla[j + 1] < 0 cisla[j] < 1 cisla[j] > 31 cisla[j + 2] < 1900 cisla[j + 2] > 2100) + { + cisla[j] = 0; + cisla[j + 1] = 0; + cisla[j + 2] = 0; + need++; + } + } + + for (int j = 0; j < s; j = j + 3) + { + if (cisla[j + 1] == 2 && cisla[j] == 29 && cisla[j + 2] % 4 != 0) + { + cisla[j] = 0; + cisla[j + 1] = 0; + cisla[j + 2] = 0; + need++; + } + } + + for (int j = 0; j < s; j = j + 3) + { + if (cisla[j + 1] == 1 && cisla[j] > 0 && cisla[j] <= 31) + { + if (cisla[j] <= 24) + { + cisla[j] = cisla[j] + 7; + } + else if (cisla[j] > 24) + { + cisla[j] = cisla[j] + 7 - 31; + cisla[j + 1]++; } } - else if (number[j + 1] == 8 && number[j] > 0 && number[j] <= 31){ - if (number[j] <= 24){ - number[j] = number[j] + 7; + else if (cisla[j + 1] == 2 && cisla[j] > 0 && cisla[j] <= 28 && cisla[j + 2] % 4 != 0) + { + if (cisla[j] <= 21) + { + cisla[j] = cisla[j] + 7; } - else if (number[j] > 24){ - number[j] = number[j] + 7 - 31; - number[j + 1]++; + else if (cisla[j] > 21) + { + cisla[j] = cisla[j] + 7 - 28; + cisla[j + 1]++; } } - else if (number[j + 1] == 9 && number[j] > 0 && number[j] <= 30){ - if (number[j] <= 23){ - number[j] = number[j] + 7; + else if (cisla[j + 1] == 2 && cisla[j] > 0 && cisla[j] <= 29 && cisla[j + 2] % 4 == 0) + { + if (cisla[j] <= 22) + { + cisla[j] = cisla[j] + 7; } - else if (number[j] > 23){ - number[j] = number[j] + 7 - 30; - number[j + 1]++; + else if (cisla[j] > 22) + { + cisla[j] = cisla[j] + 7 - 29; + cisla[j + 1]++; } } - else if (number[j + 1] == 10 && number[j] > 0 && number[j] <= 31){ - if (number[j] <= 24){ - number[j] = number[j] + 7; + else if (cisla[j + 1] == 3 && cisla[j] > 0 && cisla[j] <= 31) + { + if (cisla[j] <= 24) + { + cisla[j] = cisla[j] + 7; } - else if (number[j] > 24){ - number[j] = number[j] + 7 - 31; - number[j + 1]++; + else if (cisla[j] > 24) + { + cisla[j] = cisla[j] + 7 - 31; + cisla[j + 1]++; } } - else if (number[j + 1] == 11 && number[j] > 0 && number[j] <= 30){ - if (number[j] <= 23){ - number[j] = number[j] + 7; + else if (cisla[j + 1] == 4 && cisla[j] > 0 && cisla[j] <= 30) + { + if (cisla[j] <= 23) + { + cisla[j] = cisla[j] + 7; } - else if (number[j] > 23){ - number[j] = number[j] + 7 - 30; - number[j + 1]++; + else if (cisla[j] > 23) + { + cisla[j] = cisla[j] + 7 - 30; + cisla[j + 1]++; } } - else if (number[j + 1] == 12 && number[j] > 0 && number[j] <= 31){ - if (number[j] <= 24){ - number[j] = number[j] + 7; + else if (cisla[j + 1] == 5 && cisla[j] > 0 && cisla[j] <= 31) + { + if (cisla[j] <= 24) + { + cisla[j] = cisla[j] + 7; } - else if (number[j] > 24){ - number[j] = number[j] + 7 - 31; - number[j + 1] = 1; - number[j + 2]++; + else if (cisla[j] > 24) + { + cisla[j] = cisla[j] + 7 - 31; + cisla[j + 1]++; } } - if (number[j] != 0 && number[j + 1] != 0 && number[j + 2] != 0){ - printf("%d.%d.%d\n\n", number[j], number[j + 1], number[j + 2]); + else if (cisla[j + 1] == 6 && cisla[j] > 0 && cisla[j] <= 30) + { + if (cisla[j] <= 23) + { + cisla[j] = cisla[j] + 7; + } + else if (cisla[j] > 23) + { + cisla[j] = cisla[j] + 7 - 30; + cisla[j + 1]++; + } } - else if (number[j] == 0 && number[j + 1] == 0 && number[j + 2] == 0){ + else if (cisla[j + 1] == 7 && cisla[j] > 0 && cisla[j] <= 31) + { + if (cisla[j] <= 24) + { + cisla[j] = cisla[j] + 7; + } + else if (cisla[j] > 24) + { + + cisla[j] = cisla[j] + 7 - 31; + cisla[j + 1]++; + } + } + else if (cisla[j + 1] == 8 && cisla[j] > 0 && cisla[j] <= 31) + { + if (cisla[j] <= 24) + { + cisla[j] = cisla[j] + 7; + } + else if (cisla[j] > 24) + { + cisla[j] = cisla[j] + 7 - 31; + cisla[j + 1]++; + } + } + else if (cisla[j + 1] == 9 && cisla[j] > 0 && cisla[j] <= 30) + { + if (cisla[j] <= 23) + { + cisla[j] = cisla[j] + 7; + } + else if (cisla[j] > 23) + { + cisla[j] = cisla[j] + 7 - 30; + cisla[j + 1]++; + } + } + else if (cisla[j + 1] == 10 && cisla[j] > 0 && cisla[j] <= 31) + { + if (cisla[j] <= 24) + { + cisla[j] = cisla[j] + 7; + } + else if (cisla[j] > 24) + { + cisla[j] = cisla[j] + 7 - 31; + cisla[j + 1]++; + } + } + else if (cisla[j + 1] == 11 && cisla[j] > 0 && cisla[j] <= 30) + { + if (cisla[j] <= 23) + { + cisla[j] = cisla[j] + 7; + } + else if (cisla[j] > 23) + { + cisla[j] = cisla[j] + 7 - 30; + cisla[j + 1]++; + } + } + else if (cisla[j + 1] == 12 && cisla[j] > 0 && cisla[j] <= 31) + { + if (cisla[j] <= 24) + { + cisla[j] = cisla[j] + 7; + } + else if (cisla[j] > 24) + { + cisla[j] = cisla[j] + 7 - 31; + cisla[j + 1] = 1; + cisla[j + 2]++; + } + } + if (cisla[j] != 0 && cisla[j + 1] != 0 && cisla[j + 2] != 0) + { + printf("%d.%d.%d\n\n", cisla[j], cisla[j + 1], cisla[j + 2]); + } + + else if (cisla[j] == 0 && cisla[j + 1] == 0 && cisla[j + 2] == 0) + { puts("Neplatny datum."); } }