// Autor:    Bernhard FISCHER
// MNr.:     0126057
// E-mail:   e0126057@student.tuwien.ac.at
// BspNr.:   1150
// Beschreibung: HAMMING-CODE; Eingabe:Datenwort, Ausgabe: Prüfbits


******************
* Dokumentation: *
******************

Leistung des Programms:
Ein Datenwort wird im Binärcode eingegeben. Das Programm berechnet
die für den HAMMING-CODE benötigten Prüfbits,und gibt NUR die 
Prüfbits wieder aus.

Laut Spezifikation wird ein Datenwort mit der maximalen Grösse
von 6 Zeichen eingelesen. Um auf Eingabefehler zu überprüfen, wurde
dabei ein String eingelesen; nur die Eingaben "0" oder "1" werden in
der Form z.B.: "001101" akzeptiert. Bei einer unzulässigen Eingabe
endet das Programm mit der Ausgabe: "FALSCHE EINGABE", gefolgt von 
einem Zeilenvorschub. Anmerkung: Space beendet die Eingabe!

Das Programm ist allgemein geschrieben und beliebig erweiterbar,
d.h. setzte die Konstante "MaxEingabeLaenge = 6", stehend am Beginn
des Programms auf eine beliebige Zahl(z.B.: 27), so sind auch
grössere Eingabedaten möglich.


Zur Methode Einlesen:
---------------------
Mit der Methode readWord() wird ein String eingelesen. Anschliessend
wird dieser auf Zulässigkeit überprüft und in einzelne Chars
aufgespalten, dies geschieht mit der Methode getChars(). Diese Chars
werden anschliessend in einem CharArray gespeichert.

Zur Methode Umwandeln:
----------------------
Hier wird das eingelesene Datenwort(CharArray) in ein IntegerArray
umgewandelt; ist nötig für die Methode Berechnung.

Zur Methode Berechnung:
-----------------------
Prinzip der Berechnung von Prüfbits für Hamming-Code(siehe auch
Spezifikation): Man nehme den Gesamtcode(besteht aus den eingegebenen
Datenbits und den Prüfbits), welcher folgende Form aufweist:
PPDPDDDPDD...(P:Prüfbit, D:Datenbit). Jedes Zeichen bekommt einen
Index, beginnend von 1. Erkennbar: Jedes Bit, dass eine Potenz von 2
ist, ist ein Prüfbit. Um ein Prüfbit zu berechnen geht man folgendermassen
vor: Alle Potenzen von 2(2h0,2h1,2h2...) die ein Datenbit teilen,
sind zugleich der Index der Stelle, zu welchem Prüfbit ein Beitrag
geliefert wird.

Beispiele:  So liefert das Datenbit an der Stelle 5 einen Beitrag zu
Prüfbit an Stelle 4 und 1, dass Datenbit an der Stelle 10 einen 
Beitrag zu den Prüfbits an der Stelle 8 und 2 etc.

Dies wird mit der Methode Berechnung ausgeführt, anschliessend
werden die betroffenen Prüfbits ausgegeben. Zu der Ausgabe: 
Verwendung der Schleife ist notwendig, da die Prüfbits im
"Pruefbit"-Array nur an den Stellen der Potenzen von 2 gespeichert
sind. So mussten diese Stellen nochmals ermittelt werden. Nach der
Ausgabe eines Prüfbits folgt ein Leerzeichen(ausser letztes Bit),
abschliessend ein Zeilenvorschub.