From 469f204879ea3f0bfc42b5a1937f5fa49f1a2d63 Mon Sep 17 00:00:00 2001 From: Oleksandr Hryshchenko Date: Wed, 10 Mar 2021 00:05:48 +0100 Subject: [PATCH] du3 --- du3/program.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 du3/program.c diff --git a/du3/program.c b/du3/program.c new file mode 100644 index 0000000..903ec9d --- /dev/null +++ b/du3/program.c @@ -0,0 +1,61 @@ +#include +#include +#include + +int main() { + char input[10]; + char numbers[4]; + int date[3] + int counter1 = 0, counter2 = 0; + fgets(input, 10, stdin); + + for(int i = 0; i < 10; i++){ + if(!isdigit(input[i]) && input[i] != '.' && input[i] != '\n'){ + break; + } + + if(input[i] != '.' && input[i] != '\n'){ + numbers[counter1++] = input[i]; + } + else { + date[counter2++] = atoi(numbers); + if(counter2 == 1 && (date[0] < 1 || date[0] > 31)){ + break; + } + else if(counter2 == 2 && (date[1] < 1 || date[1] > 12)){ + break; + } + else if(counter2 == 2 && date[0] > 29){ + break; + } + else if (counter2 == 3){ + date[1] += 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", date[0], date[1], date[2]); + return 0; + } + } + } + puts("Neplatny datum"); + + return 0; +}