/*
* Stefan Ralisch
* Matrikelnummer: 0407039
* Programm 3126 - 7 Segment LED Anzeige
*/
import eprog.*;
public class Anzeige {
/*
* Die Funktion getTag bestimmt anhand des Datums den entsprechenden Wochentag.
* Dazu wird eine Formel verwendet, die den Wochentag des 1.1 des entsprechenden
* Jahres liefert (0 für Sonntag - 6 für Samstag). Dieser wird dann als return-Wert
* zurückgeliefert.
*/
public static int getTag(int Tag, int Monat, int Jahr) {
int days[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
if (Jahr < 100) { // Da 2-stellige Jahresangaben im 20. Jahrhundert angesiedelt
Jahr=Jahr+1900; // sein solln, wird im entsprechenden Fall 1900 zur Jahreszahl addiert.
}
double temp = 0;
temp = ( (Jahr + Math.floor((Jahr-1)/4) - Math.floor((Jahr-1)/100) + Math.floor((Jahr-1)/400)) );
int t11 = (int) temp;
t11=t11 % 7; // Diese Formel liefert den Wochentag des 1.1 des Jahres
int anzahl = 0;
for (int i=0; i
2)
anzahl++;
anzahl=anzahl+Tag-1;
anzahl=anzahl % 7;
return (t11+anzahl) % 7;
}
/*
* Die Funktion checkdate prüft die Eingabedaten auf Korrektheit (z.b. kein 30. Februar).
*/
public static boolean checkdate(int Tag, int Monat, int Jahr) {
if (Monat<1 || Monat>12)
return false;
if ((Monat==4) || (Monat==6) || (Monat==9) || (Monat==11))
if (Tag>30)
return false;
if (Tag>31)
return false;
if ((Tag==0) || (Monat==0))
return false;
if (Monat == 2) {
if ((Jahr % 4) == 0) {
if (Tag>29) // Falls ein Schaltjahr
return false;
}
else
if (Tag>28) // Wenn kein Schaltjahr
return false;
}
return true;
}
/*
* Checktime überprüft die Korrektheit der eingegebenen Uhrzeit.
*/
public static boolean checktime(int Stunde10, int Stunde1, int Minute10, int Minute1) {
if (((10*Stunde10) + Stunde1) > 23) {
return false;
}
if (((10*Minute10) + Minute1) > 59) {
return false;
}
return true;
}
public static void main(String[] args) {
int Tag = 0;
int Monat = 0;
int Jahr = 0;
int Stunde10 = 0;
int Stunde1 = 0;
int Minute10 = 0;
int Minute1 = 0;
boolean fehler = false;
char trennzeichen = 0;
// Einlesen
String eingabe = EprogIO.readWord ();
// Trennzeichen suchen
for (int i=0; i57) ) {
trennzeichen=eingabe.charAt(i);
break;
}
}
// Trennzeichen überprüfen
if (Character.isLetterOrDigit(trennzeichen))
fehler=true;
String sTag="";
String sMonat="";
String sJahr="";
String sStunde10="";
String sStunde1="";
String sMinute10="";
String sMinute1="";
// Tag, Monat, Jahr, Stunde und Minute werden in einzelne Strings zerlegt
if (trennzeichen == 0) { // ohne Trennzeichen
if (eingabe.length() != 10) {
fehler = true;
}
else {
try {
sTag = eingabe.substring(0,2);
sMonat = eingabe.substring(2,4);
sJahr = eingabe.substring(4,6);
sStunde10 = eingabe.substring(6,7);
sStunde1 = eingabe.substring(7,8);
sMinute10 = eingabe.substring(8,9);
sMinute1 = eingabe.substring(9,10);
}
catch (Exception E) {fehler=true;}
}
}
else { // mit Trennzeichen
try {
int i = eingabe.indexOf(trennzeichen);
sTag = eingabe.substring(0,i);
int j = eingabe.indexOf(trennzeichen, i+1);
sMonat = eingabe.substring(i+1, j);
int k = eingabe.indexOf(trennzeichen, j+1);
sJahr = eingabe.substring(j+1, k);
int l = eingabe.indexOf(trennzeichen, k+1);
sStunde10 = eingabe.substring(k+1, k+2);
sStunde1 = eingabe.substring(k+2, l);
sMinute10 = eingabe.substring(l+1, l+2);
sMinute1 = eingabe.substring(l+2, eingabe.length());
}
catch (Exception E) {
fehler=true;
}
}
try { // in Zahl umwandeln
Tag = Integer.parseInt(sTag);
Monat = Integer.parseInt(sMonat);
Jahr = Integer.parseInt(sJahr);
Stunde10 = Integer.parseInt(sStunde10);
Stunde1 = Integer.parseInt(sStunde1);
Minute10 = Integer.parseInt(sMinute10);
Minute1 = Integer.parseInt(sMinute1);
}
catch (Exception E) { fehler = true; }
if (!fehler)
fehler = !checkdate(Tag,Monat,Jahr); //Gültigkeit des Datums
if (!fehler)
fehler = !checktime(Stunde10,Stunde1,Minute10,Minute1); // Gültigkeit der Zeit
if (!fehler) {
int day = getTag(Tag, Monat, Jahr); // Wochentag
switch (day) {
case 0: EprogIO.print("13467 123456 "); break; // Sonntag
case 1: EprogIO.print("12356 123456 "); break; // Montag
case 2: EprogIO.print("123456 56 "); break; // Dienstag
case 3: EprogIO.print("12356 56 "); break; // Mittwoch
case 4: EprogIO.print("123456 123456 "); break; // Donnerstag
case 5: EprogIO.print("1567 123567 "); break; // Freitag
case 6: EprogIO.print("13467 123567 "); break; // Samstag
default: break;
}
switch (Stunde10) {
case 0: EprogIO.print("123456 "); break; // 0
case 1: EprogIO.print("23 "); break; // 1
case 2: EprogIO.print("12457 "); break; // 2
case 3: EprogIO.print("12347 "); break; // 3
case 4: EprogIO.print("2367 "); break; // 4
case 5: EprogIO.print("13467 "); break; // 5
case 6: EprogIO.print("134567 "); break; // 6
case 7: EprogIO.print("1236 "); break; // 7
case 8: EprogIO.print("1234567 "); break; // 8
case 9: EprogIO.print("123467 "); break; // 9
default: break;
}
switch (Stunde1) {
case 0: EprogIO.print("123456 "); break;
case 1: EprogIO.print("23 "); break;
case 2: EprogIO.print("12457 "); break;
case 3: EprogIO.print("12347 "); break;
case 4: EprogIO.print("2367 "); break;
case 5: EprogIO.print("13467 "); break;
case 6: EprogIO.print("134567 "); break;
case 7: EprogIO.print("1236 "); break;
case 8: EprogIO.print("1234567 "); break;
case 9: EprogIO.print("123467 "); break;
default: break;
}
switch (Minute10) {
case 0: EprogIO.print("123456 "); break;
case 1: EprogIO.print("23 "); break;
case 2: EprogIO.print("12457 "); break;
case 3: EprogIO.print("12347 "); break;
case 4: EprogIO.print("2367 "); break;
case 5: EprogIO.print("13467 "); break;
case 6: EprogIO.print("134567 "); break;
case 7: EprogIO.print("1236 "); break;
case 8: EprogIO.print("1234567 "); break;
case 9: EprogIO.print("123467 "); break;
default: break;
}
switch (Minute1) {
case 0: EprogIO.println("123456"); break;
case 1: EprogIO.println("23"); break;
case 2: EprogIO.println("12457"); break;
case 3: EprogIO.println("12347"); break;
case 4: EprogIO.println("2367"); break;
case 5: EprogIO.println("13467"); break;
case 6: EprogIO.println("134567"); break;
case 7: EprogIO.println("1236"); break;
case 8: EprogIO.println("1234567"); break;
case 9: EprogIO.println("123467"); break;
default: break;
}
}
else
EprogIO.println("FALSCHE EINGABE"); // Wenn Eingabefehler vorhanden
}
}