1090 |
woche3 |
Wochentagsberechnung |
Kategorie: | Datum |
Klasse: | mittel |
Eingabe: | String |
Ausgabe: | siehe Spez |
|
Abzugebende Files: woche3.txt, woche3.java |
Kurzbeschreibung:
Der Wochentag eines eingelesenen Datums soll ermittelt und ausgegeben werden.
Allgemeine Hinweise:
-
Ihr Programm darf nur genau jene Ausgabedaten liefern, die in der Spezifikation
verlangt werden. Die Ausgaben Ihres Programmes werden automatisch mit
Referenzdaten verglichen; etwaige Abweichungen führen zu Punkteabzügen!
-
Testen Sie Ihr Programm vor der Abgabe mit der mitgelieferten Eingabedatei.
Geben Sie Ihre Lösung erst ab, wenn die Ausgaben Ihres Programmes mit der
ebenfalls mitgelieferten Ausgabedatei übereinstimmen! Testen Sie Ihr
Programm auch mit anderen Eingabedaten.
-
Verwenden Sie nur das von uns mitgelieferten Package eprog
für Ihre Ein/Ausgaben. Programme, die Packages oder Klassen ausserhalb der verwendeten Übungsumgebung (Java2, Standard Edition, Version 1.3.1_1) verwenden, können von uns
nicht getestet werden und werden mit 0 Punkten bewertet!
-
Schreiben Sie Ihr Programm möglichst allgemein und kommentieren Sie es gut.
Erstellen Sie weiters eine übersichtliche und verständliche Dokumentation.
Damit erhöhen Sie Ihre Chancen, daß andere Studenten in den nächsten Runden
Ihr Programm wählen und Ihnen damit zu Zusatzpunkten verhelfen!
Aufgabenstellung:
Lesen Sie einen String ein, der ein Datum enthält. Dieses Datum muß in einem
der folgenden Formate vorliegen:
"TTMMJJ" oder "Tag*Monat*Jahr", wobei * für ein beliebiges Trennzeichen (keine
Ziffer, kein Buchstabe) steht und beide Trennzeichen identisch sein müssen.
Hierbei ist zu beachten, daß im ersten Fall jede der Komponenten Tag, Monat
und Jahr zweistellig angegeben sein muß, also gegebenenfalls mit führender
Null. Die Reihenfolge Tag, Monat, Jahr ist in beiden Eingabeformaten vorgeschrieben.
Ihr Programm soll auch die Gültigkeit des eingelesenen Datums prüfen. Das Jahr
soll als 19JJ interpretiert werden; 010192 und 1/1/92 bezeichnen also beide
den 1. Jänner 1992.
Ermitteln Sie den Wochentag dieses Datums und geben Sie diesen aus.
Für die Ermittlung des Wochentages können Sie folgende Formel benutzen; diese
liefert den Wochentag des 1. Jänner eines gegebenen Jahres. Daraus können Sie
dann den Wochentag des gegebenen Datums ermitteln.
Wochentag 1.1. = (Jahr + floor((Jahr-1)/4) - floor((Jahr-1)/100) + floor((Jahr-1)/400)) mod 7
wobei floor(x) für die größte ganze Zahl <= x steht.
Diese Formel liefert 0 für Sonntag, 1 für Montag, ... , 6 für Samstag.
Eingabedaten:
Lesen Sie Tag, Monat und Jahr des Datums als String in einem der oben
genannten Formate ein.
Ausgabedaten:
Bei korrekten Eingabedaten soll Ihr Programm den Wochentag als String in Großbuchstaben ausgeben ("MONTAG", "DIENSTAG", "MITTWOCH", "DONNERSTAG",
"FREITAG", "SAMSTAG" oder "SONNTAG"); anschließend einen Zeilenvorschub.
Fehlerbehandlung:
Sind die eingegebenen Daten inhaltlich nicht korrekt , so soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.
Beispiele:
Eingabedaten
|
011293
16/11/93
|
Ausgabedaten
|
MITTWOCH
DIENSTAG
|
Bemerkung: Diese Beispiele dienen nur zur Verdeutlichung der Spezifikation und
müssen nicht korrekt formatiert sein. Die korrekte Formatierung entnehmen Sie
bitte dem mitgelieferten Outputfile. Zum Testen Ihrer Lösung
können Sie aus den mitgelieferten Eingabedaten wie folgt eine Ausgabedatei
erzeugen:
java woche3 < woche3.i1 > woche3.out1
Das erzeugte File woche3.out1 können Sie dann mit dem mitgelieferten Outputfile woche3.o1 vergleichen.