EPROG-LU - Aufgabe 3126 (7 Segment LED Anzeige)
3126 Anzeige 7 Segment LED Anzeige
Kategorie:Elektrotechnik
Klasse:mittel
Eingabe:siehe Spezifikation
Ausgabe:siehe Spezifikation
Abzugebende Files: Anzeige.txt, Anzeige.java, *.java

Kurzbeschreibung:

Die Balken der 7-Segment-Anzeige einer Digital-Uhr werden "angesteuert", umein eingelesenes Datum samt Uhrzeit auszugeben.

Allgemeine Hinweise:

Aufgabenstellung:

Ihr 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 Anzeige sieht folgendermaßen aus:

Die Balken jeder Ziffer sind wie folgt numeriert:

Nummern werden auf der Anzeige wie folgt dargestellt:

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
         D -> 123456
         F -> 1567
         I -> 56
         M -> 12356
         O -> 123456
         R -> 123567
         S -> 13467
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 können Sie folgende Formel benutzen; 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:

Lesen Sie einen String ein, 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.
2-Stellige Jahresangaben sind im 20. Jahrhundert angesiedelt. 93 -> 1993

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 Eingabedaten soll Ihr 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.

Fehlerbehandlung:

Entsprechen die eingelesenen Daten nicht den Bedingungen, so geben Sie die Meldung "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, aus.

Beispiele:

Eingabedaten
0112930312

Ausgabedaten
12356 56 123456 12347 23 12457


Testen:

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 Anzeige < Anzeige.i1 > Anzeige.out1

Das erzeugte File Anzeige.out1 können Sie dann mit dem mitgelieferten Outputfile Anzeige.o1 vergleichen.

Fr Jul 30 13:54:24 CEST 2021
patent_button.gif valid-html401.png elektra.jpg fsfe-logo.png valid-css.png vim.gif anybrowser.gif