//Author: Marco Happenhofer //e-Mail: marco.happenhofer@aon.at //Ma-Nr : 0125932 //Bsp-Nr: 3059 import eprog.*; public class decode extends EprogIO { public static int dekomp (String Eingabe, StringBuffer Bearbeiten) { //dekomrimiert den übergebenen String StringBuffer Multi_Word = new StringBuffer(16); char momentaner_Buchstabe; int i,j,Fehler=0; for (i= 0;i=32) { Fehler=1; break; } momentaner_Buchstabe = Eingabe.charAt(i); if (momentaner_Buchstabe!= 39) Bearbeiten.append((char) momentaner_Buchstabe); if (momentaner_Buchstabe== 39) { i++; Multi_Word.delete(0,16); do { Multi_Word.append(Eingabe.charAt(i)); i++; } while (Eingabe.charAt(i+1)!=39); for (j=1;j<=Eingabe.charAt(i)-48;j++) { if (Bearbeiten.length()+Multi_Word.length()>32 ) { Fehler=1; break; } Bearbeiten.append(Multi_Word); } i++; } } return Fehler; //Rückgabewert 0 entspricht alles ok. //Andere Rückgabe Werte entsprechen einen Fehler. } public static int strg_ok (String Wort) { //Überprüft ob der eingegebene String der Run Lenght Regeln entspricht int Position_Hochkomma=-1; int Anzahl_Hochkomma=0; int temp; int Fehler=0; int i; int mm=0; for (i=0;i57) Fehler=1; } } do{ temp=Position_Hochkomma; Position_Hochkomma=Wort.indexOf("'",Position_Hochkomma+1); if (Position_Hochkomma-temp<2 && Anzahl_Hochkomma%2==1) Fehler =1; Anzahl_Hochkomma++; if (Anzahl_Hochkomma%2==0 && Position_Hochkomma > 0) { if (Wort.charAt(Position_Hochkomma-1)<48 || Wort.charAt(Position_Hochkomma-1)>57) Fehler =1; } } while (Position_Hochkomma != -1); Fehler = Fehler + (Anzahl_Hochkomma-1)%2; return Fehler; //Rückgabewert 0 entspricht alles ok. //Andere Rückgabe Werte entsprechen einen Fehler. } public static int dec (StringBuffer Bearbeiten,StringBuffer Ausgabe) { //Decodieren der Eingabe int i; int Buchstabe=0; int Wertigkeit; int Fehler = 0; for (i=0;i1) { if (Buchstabe>122 || Buchstabe < 32) Fehler = 1; Ausgabe.append((char)Buchstabe); Buchstabe=0; } } if (Buchstabe>122 || Buchstabe < 32) Fehler = 1; Ausgabe.append((char)Buchstabe); return Fehler; //Rückgabewert 0 entspricht alles ok. //Andere Rückgabe Werte entsprechen einen Fehler. } //*********************************************************************** //*********************************************************************** //**************H*A*U*P*T*P*R*O*G*R*A*M*M******************************** //*********************************************************************** //*********************************************************************** public static void main (String args[]) { String Eingabe; StringBuffer Bearbeiten = new StringBuffer(32); StringBuffer Ausgabe= new StringBuffer(4); int Error=0; Eingabe=readWord(); //Überprüft ob die Eingabe der Spezifikation entspricht. if (Error==0) { Error=strg_ok(Eingabe); } //Dekomprimiert die Eingabe if (Error==0) { Error=dekomp(Eingabe,Bearbeiten); } //Überprüft ob Genug Zeichen vorhanden sind if (Error==0) { if (Bearbeiten.length()%8 != 0) Error=1; } //Decodieren if (Error==0) { Error=dec(Bearbeiten,Ausgabe); } //Ausgabe if (Error==0) { print(Ausgabe); } else println("FALSCHE EINGABE"); } }