Update 'a1/program.c'
This commit is contained in:
parent
bdd94b48a7
commit
c13afed07d
395
a1/program.c
395
a1/program.c
@ -1,54 +1,345 @@
|
||||
#include <stdio.h> //pripojím si potrebné knnižnice
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#define DLZKA_RETAZCA 100 //zadefinujem potrebnú konštantu
|
||||
int main() {
|
||||
struct tm* vypoctovyCas1 = calloc(1, sizeof(struct tm)); //dynamicky alokujem štruktúry potrebné pre výpočet 1 týždňa v číselnej reprezentácií
|
||||
if (vypoctovyCas1 == NULL) return 0; //ak sa alokácia pamäte nepodarí, tak program ukončím
|
||||
|
||||
vypoctovyCas1->tm_mday = 1; //nastavím príslušné parametre pre výpočet
|
||||
vypoctovyCas1->tm_mon = 6;
|
||||
vypoctovyCas1->tm_year = 121;
|
||||
|
||||
struct tm* vypoctovyCas2 = calloc(1, sizeof(struct tm)); //analogicky s vyššie uvedenou štruktúrou
|
||||
if (vypoctovyCas2 == NULL) return 0; //ak sa alokácia pamäte nepodarí, tak program ukončím
|
||||
|
||||
vypoctovyCas2->tm_mday = 8;
|
||||
vypoctovyCas2->tm_mon = 6;
|
||||
vypoctovyCas2->tm_year = 121;
|
||||
|
||||
time_t tyzden = difftime(mktime(vypoctovyCas2), mktime(vypoctovyCas1)); //vypočítam čas 1 týždňa v číselnej reprezentácii
|
||||
|
||||
struct tm* zadanyCas = calloc(1, sizeof(struct tm)); //dynamicky alokujem štruktúru pre vstupný čas
|
||||
if (zadanyCas == NULL) return 0; //ak sa alokácia pamäte nepodarí, tak program ukončím
|
||||
|
||||
char vstup[DLZKA_RETAZCA]; //nainicializujem pamäť pre vstup
|
||||
if (fgets(vstup, DLZKA_RETAZCA, stdin) == NULL) return 0; //načítam dátum a ak sa jeho načítanie nepodarí, tak program ukončím
|
||||
|
||||
char bodka1, bodka2; //nainicializujem dodatočné pamäte
|
||||
|
||||
sscanf(vstup, "%d %c %d %c %d", &zadanyCas->tm_mday, &bodka1, &zadanyCas->tm_mon, &bodka2, &zadanyCas->tm_year); //jednotlivé vstupné údaje načítam do príslušných premenných
|
||||
if (zadanyCas->tm_mday == 0) return 0; //ak nezadám do vstupu dátum, tak program ukončím
|
||||
|
||||
zadanyCas->tm_mon -= 1; //odpočítam potrebné konštanty
|
||||
zadanyCas->tm_year -= 1900;
|
||||
|
||||
struct tm* casOdovzdania = calloc(1, sizeof(struct tm)); //dynamicky alokujem pamäť pre vypočítaný dátum
|
||||
if (casOdovzdania == NULL) return 0; //ak sa alokácia pamäte nepodarí, tak program ukončím
|
||||
|
||||
time_t vypocetCasu = mktime(zadanyCas) + tyzden; //vypočítam nový dátum
|
||||
casOdovzdania = localtime(&vypocetCasu); //vypočítaný čas prevediem z číselnej reprezentácie na štrukturovanú
|
||||
|
||||
char vypis[DLZKA_RETAZCA]; //inicializujem pamäť pre uloženie reťazcovej reprezentácie dátumu
|
||||
size_t stavPrevodu = strftime(vypis, DLZKA_RETAZCA, "%d.%m.%Y", casOdovzdania); //dátum prevediem z o štrukturovanej reprezentácie do reťazcovej
|
||||
if (stavPrevodu == 0) return 0; //ak sa prevod nepodarí, tak program ukončím
|
||||
|
||||
printf("%s\n", vypis); //nový dátum vypíšem
|
||||
|
||||
free(vypoctovyCas1); //uvoľním dynamicky alokované pamäte
|
||||
free(vypoctovyCas2);
|
||||
free(zadanyCas);
|
||||
free(casOdovzdania);
|
||||
|
||||
return 0;
|
||||
#include <stdbool.h>
|
||||
int main()
|
||||
{
|
||||
char riadok[999][999];
|
||||
int i = 0;
|
||||
int o = 0;
|
||||
int need = 0;
|
||||
bool first;
|
||||
while (1)
|
||||
{
|
||||
o = 0;
|
||||
while (1)
|
||||
{
|
||||
|
||||
riadok[i][o] = getchar();
|
||||
|
||||
if (riadok[i][o] == '\n')
|
||||
{
|
||||
first = true;
|
||||
need++;
|
||||
break;
|
||||
}
|
||||
|
||||
o++;
|
||||
}
|
||||
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')
|
||||
{
|
||||
riadok[j][0] = '9';
|
||||
riadok[j][1] = '.';
|
||||
riadok[j][2] = '9';
|
||||
riadok[j][3] = '.';
|
||||
riadok[j][4] = '9';
|
||||
riadok[j][5] = '.';
|
||||
riadok[j][6] = '\0';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
i = 0;
|
||||
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'))
|
||||
{
|
||||
i++;
|
||||
if (strlen(riadok[j]) == i)
|
||||
{
|
||||
riadok[j][0] = '9';
|
||||
riadok[j][1] = '.';
|
||||
riadok[j][2] = '9';
|
||||
riadok[j][3] = '.';
|
||||
riadok[j][4] = '9';
|
||||
riadok[j][5] = '.';
|
||||
riadok[j][6] = '\0';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int j = 0; j < need - 1; j++)
|
||||
{
|
||||
if (riadok[j][0] == '0')
|
||||
{
|
||||
riadok[j][0] = '9';
|
||||
riadok[j][1] = '.';
|
||||
riadok[j][2] = '9';
|
||||
riadok[j][3] = '.';
|
||||
riadok[j][4] = '9';
|
||||
riadok[j][5] = '.';
|
||||
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] == '.')
|
||||
{
|
||||
riadok[j][0] = '9';
|
||||
riadok[j][1] = '.';
|
||||
riadok[j][2] = '9';
|
||||
riadok[j][3] = '.';
|
||||
riadok[j][4] = '9';
|
||||
riadok[j][5] = '.';
|
||||
riadok[j][6] = '\0';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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')
|
||||
{
|
||||
riadok[j][g] = '.';
|
||||
}
|
||||
if (riadok[j][g] != '\0')
|
||||
{
|
||||
riadok1[i] = riadok[j][g];
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
riadok1[i] = '\0';
|
||||
int len = strlen(riadok1);
|
||||
int s = 0;
|
||||
for (int j = 0; j < len; j++)
|
||||
{
|
||||
if (riadok1[j] == '.')
|
||||
{
|
||||
s++;
|
||||
}
|
||||
}
|
||||
char *endptr = NULL;
|
||||
char *start = riadok1;
|
||||
int cisla[s];
|
||||
i = 0;
|
||||
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 (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 (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 (cisla[j] > 21)
|
||||
{
|
||||
cisla[j] = cisla[j] + 7 - 28;
|
||||
cisla[j + 1]++;
|
||||
}
|
||||
}
|
||||
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 (cisla[j] > 22)
|
||||
{
|
||||
cisla[j] = cisla[j] + 7 - 29;
|
||||
cisla[j + 1]++;
|
||||
}
|
||||
}
|
||||
else if (cisla[j + 1] == 3 && 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] == 4 && 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] == 5 && 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] == 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 (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.");
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user