#include <stdio.h>
bool bjahr(int); //Jahr checken
int bmonat(int); //Monat checken und max. Tage rückgeben
bool schaltjahr; //globale Variable ob Schaltjahr
void main()
{
int jahr, monat, tag;
printf("Bitte geben Sie das Datum ein:\n");
do
{
printf("Jahr: ");
scanf("%i",&jahr);
}
while( bjahr(jahr)!=true ); //abfragen solange jahr nicht richtig ist
do
{
printf("Monat: ");
scanf("%i",&monat);
}
while( !(bmonat(monat)) ); //abfragen solange monat nicht grösser 0
do
{
printf("Tag: ");
scanf("%i",&tag);
}
while(tag<1 || (tag >bmonat(monat))); //solange Tag kleiner 1 oder grösser Rückgabewert aus monats-funktion
printf("\nIhr Datum: %i.%i.%i ist in Ordnung\n\n",tag,monat,jahr); //Ausgabe
}
bool bjahr(int jahr) //Checkt das Jahr, Schaltjahr?, Rückgabe ob Jahr OK
{
if(jahr>=1 && jahr<=9999 )
{
if( !(jahr%4) ) //Überprüfung ob Schaltjahr
{
printf("Dies ist ein Schaltjahr!\n");
schaltjahr=true;
}
return true; //Jahr ist korrekt!
}
else
{
printf(" Bitte geben Sie ein Jahr zwischen 1 und 9999 ein!\n");
return false; //Jahr ist falsch
}
}
int bmonat(int monat) //Monat checken und maximale Tage rückgeben
{
if (monat == 2) //Februar?
{
if(schaltjahr) return 28; //Februar + Schaltjahr = max 28 Tage
else return 29; //Februar ohne Schaltjahr = 29 Tage
}
else if(monat == 4 || monat == 6 || monat == 9 || monat == 11)
return 30;
else if (monat == 1 || monat == 3 || monat == 5 || monat == 7 || monat == 8 ||
monat == 10 || monat == 12)
return 31;
else return 0; //Monat nicht korrekt
}