// Muhamed Kesetovic BspNr.1090
// verändert von Thomas Semper
// BspNr.3126 | 7-Segment Led Anzeige
import eprog.*;
public class Anzeige {
static String ausgabe = ""; //String für Ausgabe
public static void main(String[] args) {
int Tag = 0;
int Monat = 0;
int Jahr = 0;
int Stunde = 0;
int Minute = 0;
boolean fehler = false;
char trennzeichen = 0;
// einlesen
String eingabe = EprogIO.readWord ();
// trennzeichen suchen
for (int i=0; i
57) ) {
trennzeichen=eingabe.charAt(i);
break;
}
}
// trennzeichen überprüfen
if (Character.isLetterOrDigit(trennzeichen))
fehler=true;
String sTag="";
String sMonat="";
String sJahr="";
String sStunde="";
String sMinute="";
// Tag, Monat, Jahr, Stunde, Minute | Könnte mithilfe von String Tokenizer viel einfacher gelöst werden ;-)
if (trennzeichen == 0) { // ohne trennzeichen
try {
if (eingabe.length() > 10)
fehler = true;
sTag=eingabe.substring(0,2);
sMonat=eingabe.substring(2,4);
sJahr=eingabe.substring(4,6);
sStunde=eingabe.substring(6,8);
sMinute=eingabe.substring(8,10);
}
catch (Exception E) {fehler=true;}
}
else { // mit trennzeichen
try {
if (eingabe.length() > 14)
fehler = true;
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);
sStunde = eingabe.substring(k+1,l);
sMinute = eingabe.substring(l+1,eingabe.length());
}
catch (Exception E) {
fehler=true;
}
}
try { // in Integer umwandeln
Tag = Integer.parseInt(sTag);
Monat = Integer.parseInt(sMonat);
Jahr = Integer.parseInt(sJahr);
Stunde = Integer.parseInt(sStunde);
Minute = Integer.parseInt(sMinute);
}
catch (Exception E) { fehler = true; }
if (!fehler)
fehler = checkDate(Tag,Monat,Jahr); //Gültigkeit des Datums
if (!fehler)
fehler = checkZeit(Stunde, Minute); //Gültigkeit der Zeit
if(!fehler) {
int day = getDay(Tag, Monat, Jahr); // Wochentag
ausgabe = ausgabe(day, Stunde, Minute); //Methode die ausgabe vorbereitet
EprogIO.println(ausgabe);
}
if(fehler)
EprogIO.println("FALSCHE EINGABE"); //Ausgabe bei Fehler
}
public static int getDay(int Tag, int Monat, int Jahr) { //wurde 1:1 von mir übernommen
int days[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
Jahr=Jahr+1900;
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;
int anzahl = 0;
for (int i=0; i 2)
anzahl++;
anzahl=anzahl+Tag-1;
anzahl=anzahl % 7;
return (t11+anzahl) % 7;
}
public static boolean checkDate(int Tag, int Monat, int Jahr) { //wurde geringfügig verändert
if (Monat<1 || Monat>12)
return true;
if (Jahr>99)
return true;
if ((Monat==4) || (Monat==6) || (Monat==9) || (Monat==11))
if (Tag>30)
return true;
if (Tag>31)
return true;
if ((Tag==0) || (Monat==0))
return true;
if (Monat == 2) {
if ((Jahr % 4) == 0) {
if (Tag>29)
return true;
}
else
if (Tag>28)
return true;
}
return false;
}
public static boolean checkZeit(int Stunde, int Minute) {
if (Stunde < 0 || Stunde > 24)
return true;
if (Minute < 0 || Minute >60)
return true;
return false;
}
public static String ausgabe(int day, int Stunde, int Minute) {
//ausgabe = Wochentag
switch (day){
case 0: ausgabe += "13467 123456 "; break;//SO
case 1: ausgabe += "12356 123456 "; break;//MO
case 2: ausgabe += "123456 56 "; break;//DI
case 3: ausgabe += "12356 56 "; break;//MI
case 4: ausgabe += "123456 123456 "; break;//DO
case 5: ausgabe += "1567 123567 "; break;//FR
case 6: ausgabe += "13467 123567 "; break;//SA
}
//ausgabe = Wochentag + Uhrzeit
if (Stunde < 10)
ausgabe += "123456 ";
if (Stunde > 9 && Stunde < 20) {
ausgabe += "23 ";
Stunde -= 10;
}
if (Stunde > 19) {
ausgabe += "12457 ";
Stunde -=20;
}
switch (Stunde){
case 0: ausgabe += "123456 "; break;//0
case 1: ausgabe += "23 "; break;//1
case 2: ausgabe += "12457 "; break;//2
case 3: ausgabe += "12347 "; break;//3
case 4: ausgabe += "2367 "; break;//4
case 5: ausgabe += "13467 "; break;//5
case 6: ausgabe += "134567 "; break;//6
case 7: ausgabe += "1236 "; break;//7
case 8: ausgabe += "1234567 "; break;//8
case 9: ausgabe += "123467 "; break;//9
}
if (Minute < 10)
ausgabe += "123456 ";
if (Minute > 9 && Minute < 20) {
ausgabe += "23 ";
Minute -= 10;
}
if (Minute > 19 && Minute < 30) {
ausgabe += "12457 ";
Minute -= 20;
}
if (Minute > 29 && Minute < 40) {
ausgabe += "12347 ";
Minute -= 30;
}
if (Minute > 39 && Minute < 50) {
ausgabe += "2367 ";
Minute -= 40;
}
if (Minute > 49 && Minute < 60) {
ausgabe += "13467 ";
Minute -= 50;
}
switch (Minute){
case 0: ausgabe += "123456 "; break;//0
case 1: ausgabe += "23 "; break;//1
case 2: ausgabe += "12457 "; break;//2
case 3: ausgabe += "12347 "; break;//3
case 4: ausgabe += "2367 "; break;//4
case 5: ausgabe += "13467 "; break;//5
case 6: ausgabe += "134567 "; break;//6
case 7: ausgabe += "1236 "; break;//7
case 8: ausgabe += "1234567 "; break;//8
case 9: ausgabe += "123467 "; break;//9
}
return ausgabe;
}
}