1112 runlen Das Runlength Verfahren
Kategorie:String
Klasse:schwer
Eingabe:String
Ausgabe:String
Abzugebende Files: runlen.txt, runlen.java

Kurzbeschreibung:

Das Runlength-Verfahren stellt eine einfache Methode zur Datenkompression dar, bei der mehrfach hintereinander auftretende Zeichen durch Angabe eines Wiederholungsfaktors zusammengefaßt werden.

Allgemeine Hinweise:

Aufgabenstellung:

Ihr Programm soll Strings einlesen, diese nach dem Runlength-Verfahren codieren und das Ergebnis der Codierung ausgeben. Dieses Verfahren funktioniert wie folgt: Zeichen, die im String 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; wenn dieses Zeichen im Eingabestring vorkommt, so wird dies durch Verdoppelung '' (zwei einfache Hochkomma hintereinander) dargestellt.

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

Es nicht erwünscht, gefordert oder einer positiven Beurteilung zuträglich, am Ende der Kodierung in den Singlemodus zurückzuschalten, falls das Programm im Multimodus war.

Eingabedaten:

Lesen Sie Strings mit einer maximalen Länge von 30 Zeichen ein. Längere Strings sind als fehlerhafte Daten zu bewerten. Ebenfalls inkorrekt sind Datensätze, in denen ein Zeichen öfter als 9 mal hintereinander auftritt.

Ausgabedaten:

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

Fehlerbehandlung:

Generell wird bei fehlerhaften Eingabedatensätzen nur eine einzige Fehlermeldung erzeugt, weitere Berechnungen werden nicht mehr durchgeführt.

Sind eingegebenen Daten inhaltlich nicht korrekt oder erfüllen nicht die Bedingungen, so soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.

Beispiele:

Eingabedaten
abbbab

abcde

Ausgabedaten
a'b3'ab

abcde

Bemerkung: 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 runlen < runlen.i1 > runlen.out1

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