diff --git a/datediff.c b/datediff.c new file mode 100644 index 0000000..1fe1401 --- /dev/null +++ b/datediff.c @@ -0,0 +1,68 @@ +#include + +typedef struct{ + unsigned tag; + unsigned monat; + unsigned jahr; +}Daten1; + +typedef struct{ + unsigned tag; + unsigned monat; + unsigned jahr; +}Daten2; + +int monat_tage[2][13] = { + {0, 31, 28, 31, 30, 31, 30, 31, 31,30,31,30,31}, + {0, 31, 29, 31, 30, 31, 30, 31, 31, 30,31,30,31}}; + + +int schaltjahr(int jahr) +{ + if((jahr % 4 == 0 && jahr % 100 != 0) || (jahr % 400 == 0)){ + return 1; + } + else{ + return 0; + } +} + +int tage_diff(Daten1 eins,Daten2 zwei){ + + int jahr = 0,monat = 0,tage = 0; + int schalt = schaltjahr(eins.jahr); + + tage = zwei.tag - eins.tag; + + for (int i = eins.monat; i <= zwei.monat - 1 ; ++i) { + monat += monat_tage[schalt][i]; + } + + for (int i = eins.jahr+ 1 ; i <= zwei.jahr ; ++i) { + if(schaltjahr(i) == 1){ + jahr += 366; + } + else{ + jahr += 365; + } + } + + return tage+monat+jahr; +} + +int main(){ + unsigned tag, monat, jahr; + + printf("1. Datum (tt.mm.jjjj):"); + scanf("%d.%d.%d", &tag, &monat, &jahr); + + Daten1 temp1 = {tag, monat, jahr}; + + printf("2. Datum (tt.mm.jjjj):"); + scanf("%d.%d.%d", &tag, &monat, &jahr); + + + Daten2 temp2 = {tag, monat, jahr}; + + printf("..... Differenz: %d Tage .....",tage_diff(temp1, temp2)); +} diff --git a/datediff.exe b/datediff.exe new file mode 100644 index 0000000..48a66c2 Binary files /dev/null and b/datediff.exe differ