Collatz-Problem

18. August, 2008

Die ganzzahlige Collatz-Folge ist wie folgt definiert:

f(n) := \left\{ \begin{array}{ll} \frac{n}{2} & \hbox{, falls } n \hbox{ gerade ist} \\ 3n + 1 & \hbox{, falls } n \hbox{ ungerade ist} \end{array} \right.

Es handelt sich um ganzzahlige Division.

Wenn man die Funktion mehrfach auf sich selbst anwendet, dann erhält man wieder eine neue Folge: f(n), f(f(n)), f(f(f(n)))), f^4(n), f^5(n) \ldots.

Eine bis heute unbewiesene Vermutung ist, dass jede dieser Folgen letztendlich in der immer wiederkehrenden Folge der Zahlen 1,4,2 endet.

Implementieren Sie ein Programm, welche diese Vermutung für jede Folge f(n), f(f(n)), f(f(f(n))) bis zu einer Obergrenze f^m(n)) überprüft.


BCD Zahlen in Binärdarstellung umwandeln

21. Juli, 2008

Gegeben Sei eine BCD codierte ganze positive Zahl. Sie soll in Binärdarstellung umgewandelt werden.

Bei BCD (binary coded decimal) codierte Zahlen werden die Dezimalziffern jeweils mit 4 Bits codiert (0000 bis 1001). Die restlichen Bitkombinationen bleiben ungenutzt. Wir betrachten nur 16 Bit-Wortbreite.

Die BCD-Codierung der Dezimalzahl 532  ist 0000 0101 0011 0001

Implementieren Sie ein Programm, welches ganze Zahlen im BCD Format in Binärdarstellung konvertiert.

Geben Sie nach Möglichkeit genau einen arithmetischen Ausdruck an, der eine BCD Zahl in Binärdarstellung überführt.


Alternierende Harmonische Reihe berechnen

17. Juli, 2008

Die alternierende Harmonische Reihe ist wie folgt definiert:

\frac{1}{1} - \frac{1}{2} + \frac{1}{3} - \frac{1}{4} + \frac{1}{5} -+ ...

Diese Reihe konvergiert.

Implementieren Sie die Reihe und berechnen Sie den Grenzwert. Ihre Implementierung muss abbrechen, wenn der Grenzwert gefunden worden ist.


Texte verschlüsseln

23. Juni, 2008

Eine sehr einfache Verschlüsselungsmethode ist die polyalphabetische Verschlüsselung: jedem Buchstaben des Alphabets wird genau ein anderer Buchstabe des Alphabets zugeordnet. Die Zuordnung muss bijektiv sein.

Man betrachte z.B. die Verschlüsselung, bei der jeder Buchstabe des lateinischen Alphabets (ohne Umlaute oder ß) durch den vorherigen Buchstaben ersetzt wird:
b -> a, c -> b, …, z -> y, a -> z

Aus IBM wird dann HAL.

Implementieren Sie ein Programm, das eine Zeichenkette polyalphabetisch verschlüsselt. Die Zuordnung soll als char-Feld gegeben sein. Groß- und Kleinschreibung soll ignoriert werden.


Geld entwerfen und implementieren

19. Juni, 2008

Geldbeträge werden in fast allen betrieblichen Anwendungen benötigt (Preise, Kosten, …). Oft wird der Geldbetrag mit einer Gleitkommazahl realisiert: 120,95 Euro. Da im Gleitkommaformat Nachkommastellen im Binärformat repräsentiert werden, treten dabei Ungenauigkeiten auf.

Ein bessere Lösung ist es, Geldbeträge als ganze Zahlen darzustellen: 12095 Cents. Um Rechenungenauigkeiten zu reduzieren, sollten hundertstel Cents kodiert werden (Banken rechnen oft mit 4 Nachkommastellen): 1209500 hundertstel Cents.

Zum Rechnen werden die üblichen Operatoren benötigt. Bei Ergebnissen muss aber kaufmännisch auf die 4. Nachkommastelle gerundet werden.

Es ist deswegen sinnvoll pro Geldbetrag ein eigenes Objekt zu haben, welches die üblichen Rechenoperatoren implementiert.

Entwerfen und implementieren Sie eine Klasse Geld, mit dem derartige Geldbeträge behandelt werden können.