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)