Name: Daniel Gratzl Matrikelnummer: 0026845 Beispiel: 3126 Kategorie: Elektrotechnik Klasse: mittel Beschreibung der Aufgabenstellung: Das Programm soll ein Datum und eine Uhrzeit einlesen und daraus Zahlenkolonnen berechnen, die angeben, welche Segmente einer sechsstelligen Sieben-Segment-Anzeige man aktivieren muß, um den Wochentag und die Zeit anzuzeigen. Die ersten zwei Ziffern der Anzeige sollen verwendet werden, um den Wochentag anzuzeigen. (MO, DI, MI, DO, FR, SA bzw. SO). Dabei müssen klarerweise manche Buchstaben stililiert werden; verwenden Sie folgende Zahlenkolonnen für die Darstellung der Buchstaben: A -> 123567 0 -> 123456 8 -> 1234567 D -> 123456 1 -> 23 9 -> 123467 F -> 1567 2 -> 12457 I -> 56 3 -> 12347 M -> 12356 4 -> 2367 O -> 123456 5 -> 13467 R -> 123567 6 -> 134567 S -> 13467 7 -> 1236 Für jede Ziffer der darzustellenden Zeit soll eine Kolonne geliefert werden, die angibt, welche Segmente aufleuchten sollen. Dabei sollen die Ziffern jeder Kolonne aufsteigend sortiert sein. 1 wird z.B. als 23 codiert. Für die Ermittlung des Wochentages wird folgende Formel benutzt; diese liefert den Wochentag des 1. Jüanner 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: Einlesen eines Strings, der das Datum und die Uhrzeit enthält. Dieser String muß in einem der folgenden Formate vorliegen: "TTMMJJHHMM" oder "Tag*Monat*Jahr*Stunde*Minute", wobei * für ein beliebiges Trennzeichen (keine Ziffer, kein Buchstabe) steht und alle Trennzeichen identisch sein müssen. Hierbei ist zu beachten, daß im ersten Fall jede der Komponenten Tag, Monat, Jahr, Stunden und Minuten zweistellig angegeben sein muß, also gegebenenfalls mit führender Null. Das Datum und die Zeit müssen gültig sein (z.B. kein 30. Februar). Ausgabedaten: Bei korrekten Eingabesätzen soll das Programm die sechs Zahlenkolonnen ausgeben, die zur Darstellung von Wochentag und Uhrzeit notwendig sind. Die Uhrzeit wird immer mit 4 Stellen ausgegeben, gegebenenfalls wird bei Stunde bzw. Minute eine 0 vorangeschrieben. Trennen Sie die sechs Strings durch jeweils ein Leerzeichen und geben Sie am Ende einen Zeilenvorschub aus. Beispiel: Eingabedaten 0112930312 Ausgabedaten 12356 56 123456 12347 23 12457 ---------------------------------------------------------------------------------------------------------------------------- Programmbeschreibung: grösstenteils wurden bereits im Programm Kommentare geschrieben, daher bitte ich um Verständnis, wenn ich das Programm hier nicht nocheinmal komplett durchgehe. Verwenden der eprog.* Variablendeklaration Start des Hauptprogramms (Main-Methode) public static void main (String[] args){... Unterprogrammaufrufe Trennzeichen vorhanden oder nicht? public static void variablenVorbereiten(){... zuordnen von Tag, Monat, Jahr, Stunde, Minute try{... 1. Falls kein Trennzeichen vorhanden if{... 2. Falls Trennzeichen vorhanden und ident else if{... für den Fall, dass Stunde oder Minute einstellig angegeben wurden, wird hier die für die Ausgabe notwendige führende Null hinzugefügt. Die beiden Variablen std und min werden später zur Fehlerbehandlung benötigt Festlegung der Trennzeichen (siehe Ascii-Code) public static boolean istTrennzeichen(char variable){... Bei falschen Trennzeichen oder falscher Eing. public static void fehler(){... Datum und Uhrzeit auf Korrektheit ueberpruefen public static void kontroliereDatum(){... unter Berücksichtigung des Schaltjahres if (mm == 2){... Berechnung des Wochentages und Zuweisung der public static String tagname(){... Ausgabestrings (siehe Angabe) Ausgabe der Uhrzeit und Zuweisung der public static String uhrzeit(){ Ausgabestrings (siehe Angabe)