#include
using namespace std;
void datumEinlesen(short &tag, short &monat, short &jahr);
short codewertMonat(short monat, short jahr);
bool schaltjahr(short jahr);
string ermittleWochentag(short ergebnis);
int main(void)
{
short tag, monat, jahr;
double ret;
datumEinlesen( tag, monat, jahr );
ret = jahr + (int)(jahr / 4);
ret = ret + codewertMonat( monat, jahr ) + tag;
ret = (int)ret%7;
cout << "Dieser Tag war ein " << ermittleWochentag(ret) << endl << endl;
return 0;
}
void datumEinlesen(short &tag, short &monat, short &jahr)
{
int tage[] = { 31, 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31 };
if( schaltjahr(jahr) )
{
tage[1] = tage[1] + 1;
}
do
{
cout << "Datum eingeben:\nTag = ? ";
cin >> tag;
cout << "Monat = ? ";
cin >> monat;
cout << "Jahr = ? ";
cin >> jahr;
if(jahr <= 99 && jahr >= 1)
if( monat <= 12 && monat >= 1 )
if(tag <= tage[monat - 1] && tag >= 1)
break;
}
while(true);
}
short codewertMonat(short monat, short jahr)
{
// Codewert des Monats
// Juni 0 Mai 4
// September, Dezember 1 August 5
// April, Juli 2 Februar, März, November 6
// Januar, Oktober 3
int cwm[] = {3,6,6,2,4,0,2,5,1,3,6,1};
if( schaltjahr(jahr) )
{
cwm[0] = cwm[0] -1;
cwm[1] = cwm[1] -1;
}
return cwm[monat - 1];
}
bool schaltjahr(short jahr)
{
if(jahr%4 == 0 && jahr%100 != 0)
{
return true;
}
return false;
}
string ermittleWochentag(short ergebnis)
{
// Donnerstag 0
// Freitag 1
// Samstag 2
// Sonntag 3
// Montag 4
// Dienstag 5
// Mittwoch 6
string wochentag[] = { "Donnerstag", "Freitag", "Samstag", "Sonntag",
"Montag", "Dienstag", "Mittwoch" };
return wochentag[ergebnis];
}
Veröffentlicht am: 17.12.2007 von: CHR | publiziert in: C, FH-Aachen