Tageberrechnung
//Differenz berrechnung zwischen 2 Daten.
#include
void LeseDatum(unsigned int&, unsigned int&, unsigned int&);
unsigned int PruefeDatum(unsigned int, unsigned int, unsigned int);
unsigned int PruefeSchaltJahr (unsigned int);
unsigned int BestimmeAnzahlTage (unsigned int, unsigned int, unsigned int);
unsigned int BestimmungDifferenz (unsigned int, unsigned int);
void AusgabeDifferenz (unsigned int);
void main (void)
{
unsigned int ausgabeWert, anfangJahre, anfangMonate, anfangTage, endJahre, endMonate, endTage, schaltJahr1, schaltJahr2, anzahlTage1, anzahlTage2;
do
{
printf("Bitte geben sie das Anfangs Datum ein! (z.B. 02.12.1986)");
LeseDatum (anfangJahre, anfangMonate, anfangTage);
printf("Bitte geben sie das End Datum ein! (z.B. 02.12.2004)");
LeseDatum (endJahre, endMonate, endTage);
}
while (PruefeDatum (anfangJahre, anfangMonate, anfangTage) == 1 && PruefeDatum (endJahre, endMonate, endTage) == 1);
schaltJahr1 = PruefeSchaltJahr (anfangJahre);
schaltJahr2 = PruefeSchaltJahr (endJahre);
anzahlTage1 = BestimmeAnzahlTage (anfangJahre, anfangMonate, anfangTage);
anzahlTage2 = BestimmeAnzahlTage (endJahre, endMonate, endTage);
ausgabeWert = BestimmungDifferenz (anzahlTage2, anzahlTage1);
AusgabeDifferenz (ausgabeWert);
}
void LeseDatum(unsigned int &jahre, unsigned int &monate, unsigned int &tage)
{
scanf("%u.%u.%u", &tage, &monate, &jahre);
PruefeDatum(jahre, monate, tage);
}
unsigned int PruefeDatum (unsigned int jahre, unsigned int monate, unsigned int tage)
{
unsigned int letzter_tag, datum_ok;
if(jahre > 0 && jahre < 9999)
{
if(monate >= 1 && monate <= 12)
{
switch(monate)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
letzter_tag = 31;
break;
case 4: case 6: case 9: case 11:
letzter_tag = 30;
break;
case 2: if(PruefeSchaltJahr (jahre)==1)
{
letzter_tag = 29;
}
else
{
letzter_tag = 28;
}
if (tage >= 1 && tage <= letzter_tag)
{
datum_ok = 1;
}
}
}
}
return datum_ok;
}
unsigned int PruefeSchaltJahr (unsigned int jahre)
{
unsigned int schaltJahr;
if(jahre % 4 == 0 && jahre % 100 != 0 || jahre % 400 ==0)
{
schaltJahr = 1;
return schaltJahr;
}
}
unsigned int BestimmeAnzahlTage (unsigned int jahre, unsigned int monate, unsigned int tage)
{
unsigned int anzahlTage;
anzahlTage = jahre * 360 + (monate - 1)* 30 +tage;
return anzahlTage;
}
unsigned int BestimmungDifferenz (unsigned int wert1, unsigned int wert2)
{
unsigned int differenz;
differenz= wert1 - wert2;
return differenz;
}
void AusgabeDifferenz (unsigned int ausgabeWert)
{
printf("Es sind %u Tage differenz!", ausgabeWert);
}
|