3082 Infge Mittlerer Informationsgehalt
Kategorie:Statistik
Klasse:leicht
Eingabe:siehe Spezifikation
Ausgabe:siehe Spezifikation
Abzugebende Files: Infge.txt, Infge.java, *.java , 636.txt, 748.txt

Kurzbeschreibung:

Die Auftrittswahrscheinlichkeiten und Wortlängen, die bei der Codierung von Zeichen verwendet werden, werden eingelesen; der mittlere Informationsgehalt, die Redundanz und die relative Redundanz werden ermittelt und ausgegeben.

Allgemeine Hinweise:

Aufgabenstellung:

Lesen Sie die Auftrittswahrscheinlichkeiten p und Wortlängen l von Zeichen ein.

Berechnen Sie daraus den mittleren Informationsgehalt H, die Redundanz R sowie die relative Redundanz r.

Verwenden Sie dazu folgende Formeln:

(Informationsgehalt eines Zeichens)

(Mittlerer Informationsgehalt des Codes)

(Mittlere Wortlänge des Codes)

(Redundanz des Codes)

r = R/L (relative Redundanz) ld bezeichnet den logarithmus dualis (Logarithmus zur Basis 2). Den natürlichen Logarithmus, den Sie zur Berechnung des ld benötigen, holen Sie bitte aus der Klasse math.

Eingabedaten:

Lesen Sie Paare von Wahrscheinlichkeiten p (Float) und Wortlängen l (Integer) ein. Die Eingabe einer negativen Zahl bei der Wahrscheinlichkeit beendet die Folge; es soll dann keine Wortlänge mehr eingelesen werden. (Die nächste Eingabe ist die erste Wahrscheinlichkeit des nächsten Datensatzes). Ein gültiger Datensatz muß aus mindestens 2 und maximal 8 Zahlenpaaren bestehen.

Die Werte für p müssen im Bereich 0<p<=1 liegen und die Summe aller p muß 1 sein. Die Wortlängen l müssen im Bereich 0<l<=5 liegen.

Wenn bei der Berechnung von R ein negatives Resultat herauskommt, dann war der Datensatz ungültig.

Ausgabedaten:

Bei korrekten Eingabedaten soll Ihr Programm die Werte für H, R und r in dieser Reihenfolge als Float mit 3 Nachkommastelle liefern. Trennen Sie die einzelnen Ausgabewerte durch Leerzeichen und geben Sie zum Schluß einen Zeilenvorschub aus.

Fehlerbehandlung:

Sämtliche Eingabedatensätze sind immer bis zum definierten Endezeichen einzulesen. Generell wird bei fehlerhaften Eingabedatensätzen nur eine einzige Fehlermeldung erzeugt, weitere Berechnungen werden nicht mehr durchgeführt.

Enthält der Eingabedatensatz einen ungültigen Datentyp, so soll einmal das Zeichen "?", gefolgt von einem Zeilenvorschub, ausgegeben werden.

Waren die Datentypen bei allen Eingaben richtig, die eingegebenen Daten dann aber inhaltlich nicht korrekt, so soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.

Beispiele:

Eingabedaten
0.5 2 0.25 2 0.25 2 -1

1.2 2 0.34 3 -1.3

Ausgabedaten
1.500 0.500 0.250

FALSCHE EINGABE


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

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