diff --git a/jahrtag.c b/jahrtag.c new file mode 100644 index 0000000..7572c24 --- /dev/null +++ b/jahrtag.c @@ -0,0 +1,75 @@ +#include + + +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){ + return(jahr % 4 == 0 && jahr % 100 != 0) || (jahr % 400 == 0); + +} + +int datum_zu_tagesnummer(int monat,int jahr) +{ + + int anzahlTage = 0; + int schalt = schaltjahr(jahr); + + for (int i = 1; i < monat ; ++i) { + anzahlTage += monat_tage[schalt][i]; + } + + return anzahlTage; +} + +void tagesnummer_zu_datum(int taganzahl, int jahr, int *tag, int *monat) { + int i; + int schalt = schaltjahr(jahr); + + for (i = 1; i <= 12 && taganzahl > monat_tage[schalt][i]; i++) { + taganzahl -= monat_tage[schalt][i]; + } + *monat = i; + *tag = taganzahl; + +} + +int main(void) { + int eingabe; + + do{ + int tag, monat, jahr,taganzahl; + int c; + printf("0 Ende\n"); + printf("1 Datum zu einer Tagesnummer bestimmen\n"); + printf("2 Tagesnummer zu einem Datum bestimmen\n"); + printf("\nDeine Wahl: "); + scanf("%d", &eingabe); + + + switch (eingabe) { + case 1: + printf("\nGib dein Datum (tt.mm.jjjj) ein: "); + scanf("%d.%d.%d", &tag, &monat, &jahr); + printf(".... %02d.%02d.%d = %d. Tag im Jahr\n\n", tag, monat, jahr, datum_zu_tagesnummer(monat,jahr)+tag); + break; + case 2: + printf("\nGib Tagesnummer und Jahr (nr,jahr) ein: "); + scanf("%d,%d", &taganzahl, &jahr); + tagesnummer_zu_datum(taganzahl, jahr, &tag, &monat); + printf(".... %d. Tag im Jahr = %02d.%02d.%d\n\n", taganzahl, tag, monat, jahr); + break; + case 0: + break; + default: + printf("Keine richtige Eingabe!\n"); + while ((c = getchar()) != '\n' && c != EOF) { } + eingabe = 3; + break; + } + + }while(eingabe!=0); + +}