Tutorials Infos - Anleitungen - Hilfe - Dreamcodes
 

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);
}

 
ID: 321
eingestellt am: 12.03.2004
Autor: Semokum
Status zum lesen: Gast
gelesen: 4930
Webseite: www.dreamcodes.com
[Drucken]