Der junge Gauß hat eine kleine Formel entwickelt, mit der man zu einem Datum bestehend
aus Tag, Monat und Jahr den zugehörigen Wochentag ermitteln kann.
Schreiben Sie ein Programm, daß zu einem vom Benutzer eingegebenen Datum den zugehörigen Wochentag
ermittelt.
Damit die untenstehende Formel richtige Ergebnisse liefert, muß das Datum zwischen
dem 01.01.1582 und dem 31.12.3000 liegen.
Die Berechnung erfolgt mit der folgenden von Gauß stammenden sogenannten Kalenderformel :
Das zu behandelnde Datum sei in den Variablen tag , monat , jahr abgelegt.
Damit werden zwei Hilfsgrößen h und k wie folgt berechnet :
Ist monat <= 2, | so ist |
h = monat + 12 | und | k = jahr - 1. |
Ist monat > 2, | so ist |
h = monat | und | k = jahr. |
Der Wochentag ergibt sich nun durch :
wochentag = [ tag + 2*h + (3*h + 3) div 5 + k + k div 4 - k div 100 + k div 400 +1] mod 7
Dadurch erhält die Variable wochentag einen Wert zwischen 0 und 6 .
Dabei bedeutet 0 = Sonntag , 1 = Montag , usw.
Erläuterung :
-
div ist der Operator für Ganzzahldivision, so gilt etwa 15 div 7 = 2 , da 7 in 15 zweimal enthalten
ist. Der Rest wird dabei nicht berücksichtigt, analog 17 div 3 = 5 . In C# (wie in C/C++) wird
die Ganzzahldivision realisiert durch a/b , wenn a und b Ganzzahltypen (int, long, short, byte) sind.
-
mod ist der Restoperator, so gilt etwa 15 mod 7 = 1 , da 15 geteilt 7 den Rest 1 ergibt. Der ganze
Anteil wird dabei nicht berücksichtigt, analog 17 mod 3 = 2 . In C# (wie in C/C++) wird
der Restoperator realisiert durch a%b .
Siehe auch Arithmetische Operatoren
Siehe auch Gregorianischer und julianischer Kalender