1072 gehalt Informationsgehalt
Kategorie:Statistik
Klasse:leicht
Eingabe:float
Ausgabe:float im Fixpunktf.
Abzugebende Files: gehalt.txt, gehalt.java

Kurzbeschreibung:

Der Informationsgehalt der Zeichen eines Alphabets soll berechnet werden.

Allgemeine Hinweise:

Aufgabenstellung:

Lesen Sie eine Folge von Zahlen ein, die die Auftrittswahrscheinlichkeiten von Zeichen darstellen.

Berechnen Sie für jedes dieser Zeichen den Informationsgehalt, wobei Sie nach folgender Formel vorgehen sollen:

Sei p die Auftrittswahrscheinlichkeit eines Zeichens, so ist

h=ld(1/p)

wobei h den Informationsgehalt und ld den logarithmus dualis (Logarithmus zur Basis 2) bezeichnet. Den natürlichen Logarithmus, den Sie zur Berechnung des ld benötigen, finden Sie in der Klasse java.math

Eingabedaten:

Lesen Sie die Auftrittswahrscheinlichkeiten als Float-Zahlen ein, wobei diese zwischen 0 und 1 (exclusive 0, inclusive 1)liegen müssen. Durch die Eingabe einer negativen Zahl wird die Folge beendet. Diese negative Zahl ist selbstverständlich nicht als Fehler zu betrachten.

Die Zahlenfolge muß aus mindestens einer Zahl und maximal 10 Zahlen bestehen.

Ausgabedaten:

Bei korrekten Eingabedaten ist der Informationsgehalt der einzelnen Zeichen, jeweils getrennt durch ein Leerzeichen, auszugeben, anschließend ein Zeilenvorschub.

Fehlerbehandlung:

Sämtliche Eingabedatensätze sind immer vollständig 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.

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

Beispiele:

Eingabedaten
0.5 0.25 0.25 -1.0

1.2 0.24 0.6 -1.0

Ausgabedaten
1.000 2.000 2.000

FALSCHE EINGABE

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

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