Veröffentlicht 11. Februar 200124 j Hi an alle bin gerade am knaupeln. Kann man eine Umrechnung für Dez zu Dualzahlen auch mit einer Rekursiven Funktion mit Procedures lösen ? Laufen soll das mit pascal. Hier mein Code hier zwar rekursiv aber nicht mit Procedures sonder mit Functions. Wer weiß Rat danke ? Beispiel: program dezimaldual; uses crt; var dezimalzahl:longint; dual:array [1..16]of integer; x,z:integer; function dezi(d:integer):integer; var y:integer; begin if d>0 then begin y:=d mod 2; dezi:=dezi(d div 2); write(y); end; end; begin clrscr; writeln; writeln('gieb dezimalzahl ein:'); readln(dezimalzahl); write(^j,'die dualzahl lautet : '); dezi(dezimalzahl); end.
12. Februar 200124 j Hi, wenn ich Dich richtig verstehe, willst Du das ganze mit Procedures anstatt mit Funktionen lösen. Mein Vorschlag wäre: program dezimaldual; uses crt; type tdual=array[1..16] of boolean; var dezi:longint; dual:tdual; i:integer; procedure rech(dezi:integer;var dual:tdual;i:integer); var hilf:integer; begin if (dezi>0) and not(i>16) then begin dual:=dezi mod 2; dezi:=dezi div 2; rech(dezi,dual,i+1); end; end; begin for i:=1 to 16 do dual:=false; (* Setzt den Dual-Array auf False, d.h 0 *) clrscr; writeln; write('Gib die Dezimalzahl ein : '); readln(dezi); i:=1; rech(dezi,dual,i); writeln; write('Die Dualzahl lautet : '); for i:=16 downto 1 do if dual then write('1') else write('0'); writeln; readln; end. Müsste funzen MGF LoneGunman
12. Februar 200124 j HALT/STOP Müßte was berichtigt werden: 1. Die Variable Hilf kanst Du steichen, ist unnütz. 2. Dann heißt es nicht "dual:=dezi mod 2" sondern if dezi mod 2 = 0 then dual:=false else dual:=true; Sorry waren Flüchtigkeitsfehler. MFG LoneGunman
12. Februar 200124 j Vielen Dank werde das geleich checken. Habe am Freitag eine Klausur und bin eigentlich nicht so recht mit den Informationen im Unterricht zu frinden. Nochmals Danke.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.