Pascal - Programm zum Umrechnen in verschiedenen Zahlensysteme

S

Separate

Neues Mitglied
Thread Starter
Dabei seit
03.03.2008
Beiträge
7
Reaktionspunkte
0
Hallo erstmal.

Ich hab ein Problem mit einem programm und zwar komm ich einfach nicht weiter. Ich hoffe ihr könnt mir vielleicht weiterhelfen.

Ich muss ein programm schreiben das mir zahlen von dezimal nach dual und umgekehrt rechnet.

Könnt ihr mir vielleicht bei den beiden Proceduren helfen ?.

PROGRAM umrechnen;
USES crt;
VAR choice:INTEGER;

BEGIN
REPEAT
clrscr;
writeln( '[1] Dec2Bin' );
writeln( '[2] Bin2Dec' );
writeln( '[3] Arab2Rom' );
writeln( '[0] Programm beenden' );
write( 'Ihre Wahl? ' );
read( choice );

CASE choice OF
1: BEGIN
write( 'Bitte geben sie die umzuwandelnde Dezimalzahl ein... ' );
readln( Zahl_dez );
writeln;
umrechnen_dez_dual;
Writeln( '==> Binärzahl: ', Zahl_dual2 );
END;
2: BEGIN
write( 'Bitte geben sie die umzuwandelnde Binärzahl ein... ' );
readln( Zahl_dual2 );
writeln;
umrechnen_dual_dez;
Writeln( '==> Dezimalzahl: ', Zahl_dez );
END;
3: (*...*)
END;

UNTIL choice = 0;
END.

PROCEDURE umrechnen_dez_dual;
HIER STEH ICH AN ! -

Kann mir da vielleicht einer weiterhelfen ?

Danke schonmal.

Seperate
 
solltest du deine übungsaufgaben nicht selber machen? ;)
kleiner tipp: modulo 2 ;)
 
solltest du deine übungsaufgaben nicht selber machen? ;)
kleiner tipp: modulo 2 ;)

ich mach sie auch selber :) !.

Procedure umrechnen_dez_dual;
Var Rest,j,x:Integer;
Begin
i:=1;
Writeln('Rechnung:');
Repeat
x:=Zahl_Dez div 2;
Rest:=zahl_dez mod 2;
zahl_dual:=rest;
inc(i);
Zahl_Dez:=x;
Until zahl_dez=0;
for j:=i-1 downto 1 do
Begin
Rest:=Zahl_dual[j];
Zahl_dual2:=Zahl_dual2+IntToStr(Rest);
end;
End;

hier ist sie. nur wenn ich sie einbaue stürtzt mein programm komplett ab. also kann irgendetwas nicht stimmen - und ich finde den fehler leider nicht selber.
 
Wäre es dann nicht an der Zeit, sich mal mit Debuggen zu beschäftigen?
Wenn einem der Lösungsweg nicht klar ist, dann kann man auch nichts programmieren.
 
Separate schrieb:
und ich finde den fehler leider nicht selber.

Dann finde heraus welcher Teil der Prozedur dafür verantwortlich ist. Beliebte Methode: kommentiere zunächst alle aus und stell sicher das die Prozedur quasi nur leer läuft. Füge dann Zug um Zug Deine Logik wieder hinzu bis der Fehler auftritt. Schau Dir die Zeile(n) die dies verursachen genau an, dort liegt mit hoher Chance der Fehler!
 
  • Gefällt mir
Reaktionen: below
Ich rate mal:

Code:
Zahl_Dez:=x; 
Until zahl_dez=0;

Ansonsten gibt es noch das beliebte printf-Debuging. Dazu wird an vermuteten Fehlerstellen der Wert der Variablen ausgegeben ( Writeln(x); ). Nicht ganz so effektiv wie ein Debugger, aber manchmal schneller..
 
Zurück
Oben Unten