Bearbeitungszeitraum: | 13.04 - 27.04.04, 10 Uhr |
Gesamtpunktzahl: | 6 Punkte |
Praktikumsziel: | Wiederholung des Umgangs mit der Technologie der
Erstellung von Java-Programmen. Verwendung einfacher Fallunterscheidungen und logischer Ausdrücke |
Voraussetzungen: | elementare Java-Kenntnisse |
Aufgabe: | Aus aktuellem (nun leider schon verflossenem) Anlass sollen Sie ein Java-Programm schreiben, das das Datum beliebiger Ostersonntage ermittelt. |
Benutzen Sie den im Folgenden beschriebenen Algorithmus:
Auf den jungen Carl Friedrich Gauß geht
der folgende Algorithmus zur Berechnung des Osterdatums (Ostersonntag)
zurück
[Quelle: "Weser- Kurier" Bremen vom 18.04. 1991]:
[ Bei den genannten Resten (Dreißigerrest, Siebenerrest, etc) handelt es sich natürlich um die Reste bei ganzzahlinger Division durch die genannten Zahlen (30, 7, etc.) ]Gauß stellte folgende Formel zur Berechnung des Osterdatums [ eines Jahres j ] auf:
Ostern ist am (22+d+e). März oder am (d+e-9). April, je nachdem,
ob (22+d+e) < 32 ist oder nicht. Die Berechnung von d und e ist leider
etwas aufwendig, und es gilt:j = 100p+n [ p sei dabei maximal, d.h. p = j /100, n = j % 100 ]
q = ganzzahliger Teil von p/3
r = ganzzahliger Teil von p/4
x = Dreißigerrest von 15+p-q-r
y = Siebenerrest von p-r+4
a = Neunzehnerrest von j
b = Vierererst von j
c = Siebenerrest von j
d = Dreißigerrest von 19a+x
e = Siebenerrest von 2b+4c+6d+yKeine Regel ohne Ausnahme:
Ist d = 29 und e = 6, so ist Ostern am 19. April.
Ist d = 28 und e = 6, so ist Ostern am 18. April.Beispiel für Ostern 1992:
j = 1992, p = 19, n = 92, q = 6, r = 4, x = 24,
y = 5, a = 16, b = 0, c = 4, d = 28, e = 0,
22+d+e=50 > 32, d+e-9 = 19
Also 19. April
In der interaktiven Variante (Aufruf ohne
Parameter) soll sich z.B. der folgende Dialog mit dem Programm ergeben:
data
pinf1 157 ( Aufgaben/1.Aufgabe ) > java Ostern
Welches Jahr ? 2004
Ostern ist am 11. April im Jahr 2004
Welches Jahr ? 2005
Ostern ist am 27. Maerz im Jahr 2005
Welches Jahr ? ^D
data pinf1 158 ( Aufgaben/1.Aufgabe )
>
( fett: Nutzereingaben,
nicht fett: Ausgaben des Programmes, kursiv:
Shell-Prompt, kann natürlich variieren )
Testen Sie das Programm mit folgenden
Eingabedaten und kontrollieren Sie dabei, ob die angegebenenen Daten
berechnet werden (Ausgabe von java Ostern 1995 ):
1995
16. April
1996
7. April
1997
30. Maerz
1998
12. April
1999
4. April
2000
23. April
2001
15. April
2002
31. Maerz
2003
20. April
2004
11. April
Jede Ausgabezeile besteht aus der Jahreszahl, gefolgt von 2
Tabulatoren und dem Datum ( Tag.
Monat ). Wenn der Tag des Datums einstellig ist, soll ein
einzelnes Leerzeichen
vor dem Datum dafür sorgen, dass die Tageszahl rechtsbündig
ausgegeben wird !
Senden Sie als Lösung Ihren Quelltext Ostern.java und das erzeugte Protokollfile output mit den Osterdaten 2005 bis 2025 (Ausgabe von java Ostern 2005 2025 ) via
https://goya.informatik.hu-berlin.de
unter der Aufgabennummer 1 ein.
Hinweis:
Der Zugang zu den Programmparametern ist über den Parameter der main-Methode
einer ausführbaren Java-Klasse möglich.
Erstellt am 1.4.2004
Zuletzt modifiziert am 5.4.2004