diff --git a/a1/program.c b/a1/program.c index e69de29..3b54b0c 100644 --- a/a1/program.c +++ b/a1/program.c @@ -0,0 +1,54 @@ +#include //pripojím si potrebné knnižnice +#include +#include +#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; +} \ No newline at end of file