3059 Decode Decodierung
Kategorie:String
Klasse:mittel
Eingabe:siehe Spezifikation
Ausgabe:siehe Spezifikation
Abzugebende Files: Decode.txt, Decode.java, *.java , 142.txt, 62.txt

Kurzbeschreibung:

Ein komprimierter und codierter String soll entpackt und decodiert werden.

Allgemeine Hinweise:

Aufgabenstellung:

Lesen Sie einen String ein, der nach dem Runlength-Verfahren komprimiert wurden und dekomprimieren sie diesen.

Die Runlength-Komprimierung funktioniert wie folgt: Zeichen, die wiederholt vorkommen, werden durch eine nachgestellte Ziffer "vervielfacht". Dazu wird zwischen zwei "Betriebsarten" unterschieden:

Im Singlemodus werden die Zeichen so übernommen, wie sie im Eingabestring stehen; im Multimodus hingegen durch das Nachstellen einer Ziffer, die die Häufigkeit angibt, vervielfacht. Der šbergang zwischen Single- und Multimodus wird durch das Trennzeichen ' (einfaches Hochkomma) markiert.

Am Anfang jedes Datensatzes ist das Programm im Singlemodus; der Multimodus wird nur verwendet, wenn tatsächlich mehrere gleiche Zeichen hintereinanderauftreten. Wenn mehrere Gruppen gleicher Zeichen unmittelbar aufeinanderfolgen, so wird nur einmal in den Multimodus umgeschalten und erst beim nächsten "Einzelgänger" zurückgeschalten.

Sie müssen diesen Vorgang umdrehen. Danach haben Sie einen String vorliegen, dessen Länge durch 8 teilbar sein muß und der nur aus den Ziffern "1" und "0" bestehen darf (sonst liegt ein Eingabefehler vor).

Jeweils 8 dieser Ziffern bilden eine Binärzahl, die die Ordnungszahl (den "ASCII"-Code) des zu ermittelnden Zeichens angibt. Ermitteln Sie die so codierten Zeichen und geben Sie diese aus.

Eingabedaten:

Lesen Sie Strings ein, die nach der oben beschriebenen Methode codiert und komprimiert sind. Nach der Dekomprimierung dürfen maximal 32 Binärziffern vorliegen; daraus werden im zweiten Schritt maximal 4 Zeichen.

Die Ordnungszahlen dieser Zeichen müssen größer als 33 und kleiner als 122 sein.

Ausgabedaten:

Bei korrekten Eingabesätzen soll Ihr Programm das Ergebnis der Decodierung, gefolgt von einem Zeilenvorschub, ausgeben.

Fehlerbehandlung:

Wenn ein falscher String eingeben wird, soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.

Beispiele:

Eingabedaten
01'05'1

01'05'101'04'10

Ausgabedaten
A

AB


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

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