This commit is contained in:
Daniel Zwanzig 2025-04-24 16:02:17 +02:00
parent f7b7880a24
commit 5b29863cc5

75
jahrtag.c Normal file
View File

@ -0,0 +1,75 @@
#include <stdio.h>
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);
}