Update 'a1/program.c'
This commit is contained in:
parent
11261c7a19
commit
bdd94b48a7
54
a1/program.c
54
a1/program.c
@ -0,0 +1,54 @@
|
|||||||
|
#include <stdio.h> //pripojím si potrebné knnižnice
|
||||||
|
#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;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user