Die Aufgabe
Aufgabe 10.4
In Aufgabe 6.3a wurde ein Programm zur Umwandlung einer natürlichen Zahl von der Dezimaldarstellung in die Dualdarstellung entwickelt. Es wurde der Einfachheit halber pro Zeile eine Ziffer der Dualzahl ausgegeben, beginnend mit der niedrigstwertigen.
Um die Ausgabe nun so zu gestalten, dass die resultierende Dualzahl in einer Zeile geschrieben wird und die niedrigstwertige Stelle wie üblich rechts angeordnet ist, wird die Umwandlung mit Hilfe der Rekursion realisiert. Es dürfen die mathematischen Funktionen Division und Rest (modulo) verwendet werden.
Vervollständigen Sie die vorgegebene Datei A10_4.java.
Die vorgegebene Datei A10_4.java:
class A10_4 { static void printDual (int x) { // Ergänzen Sie hier den fehlenden Code } public static void main (String[ ] args) { Out.print("Bitte geben Sie eine Zahl aus N0 ein: "); int n = In.readInt(); printDual(n); Out.println(); }}In Aufgabe 6.3a kam jede Ziffer in eine eigene Zeile, die letzte Ziffer zuerst. Für 13 stand da untereinander 1, 0, 1, 1. Jetzt soll 1101 in einer Zeile stehen, so wie man eine Dualzahl schreibt. Die Vorlage gibt main schon vor. Zu schreiben ist nur der Rumpf der Methode printDual, und zwar rekursiv.
Erlaubt sind die ganzzahlige Division / und der Rest %(modulo). Für ganze Zahlen schneidet / die Nachkommastellen ab: 13 / 2 ist 6. 13 % 2 ist der Rest 1. In der Divisionsmethode heißen dieselben Rechnungen x div 2 und x mod 2: x div 2 ist in Java x / 2, x mod 2 ist x % 2.
- Rückblick: was die Divisionsmethode liefert.
- Die Idee: erst der vordere Teil, dann die letzte Ziffer.
- Der Basisfall: x kleiner als 2.
- Erst aufrufen, dann ausgeben.
- Der Ablauf für 13.
- Das fertige Programm testen.