Prof. Dr. H. Weber Praktikum Programmieren 1 in C, WS 2004/05 Übungsblatt 8 _____________________________________________________ Aufgabe 23 In diese Aufgabe wird ein Problem aus der LV Einführung in die Informatik praktisch programmiert. Es geht um die Konvertierung von gebrochenen Zahlen aus dem Dezimalsystem in eine Zahlsystem zur Basis B (2 <= B <= 16), vgl. Kap. 3.3.2 (Skript Prof. Kröger/Werntges). Wir zitieren: - Getrennte Behandlung von Vorkommateil und Nachkommateil der Zahl - Vorkommateil ist natürliche Zahl, Umwandlung durch Rechnen in Quellsystem: Beispiel: Konvertiere 12210 zur Basis B = 5 Schritt 122 24 4 /B /5 /5 /5 Quotient 24 4 0 Rest 2 4 4 12210 = 4425 Horner-Schema für Brüche - Grundlage: 1 z b B (( ... (b i i M / B b M 1 ) / B ... b 2 ) / B b 1 ) / B iM - Verfahren: Schrittweise Multiplikation von z Q mit der Zielbasis B Schritt Multipl. Produkt (Bruchteil) Ganzteil bi 1 2 ... M-1 M z*B ((...(b-M / B + b-M+1) / B + ... + b-3) / B + b-2) / B (...(b-M / B + b-M+1) / B + ... + b-3) / B ... b-1 b-2 ... b-M / B 0 b-M+1 b-M z*B ... 2 z * BM-1 z * BM z = (0, b-1, b-2, ... , b-M)B - Weitere Probleme: Anzahl der notwendigen Schritte nicht von vornherein bekannt Ein gegebener endlicher Bruch muss zur Zielbasis nicht endlich sein a) Entwerfen Sie eine Programmstruktur zur Lösung des vorangestellten Problems und zeichnen Sie die entsprechenden Struktogramme. b) Schreiben Sie ein C-Programm. Zur Speicherung der Zahlen im Zielsystem verwende man Strings! Einheften in Praktikumsordner: Struktogramm, Programmlisting, Resultate.