PROGRAM ZAHLUMWANDLUNG (IN,OUT); TYPE FELD=ARRAY [0..11] OF INTEGER; VAR REGISTER:FELD; I,ZAHL:INTEGER; MODUS:CHAR; PROCEDUR EINGABE(VAR REGISTER:FELD); VAR I:INTEGER; BEGIN WRITELN("GEBEN SIE DIE DUAL-ZAHL EIN !"); READLN; FOR I:=0 TO 11 DO READ(REGISTER[I]); END; PROCEDUR AUSGABE(VAR REGISTER:FELD); VAR I:INTEGER; BEGIN WRITELN("DIE ZAHL IM BINAERSYSTEM:"); FOR I:=0 TO 11 DO WRITE(REGISTER[I]:1); WRITELN; END; PROCEDUR DECDUAL(ZAHL:INTEGER); VAR REST,I:INTEGER; BEGIN IF ZAHL<0 THEN ZAHL:=ZAHL+4096; FOR I:=11 DOWNTO 0 DO BEGIN REST:=ZAHL MOD 2; ZAHL:=ZAHL DIV 2; REGISTER[I]:=REST; END; AUSGABE(REGISTER); END; PROCEDUR DUALDEC(VAR REGISTER:FELD); VAR I:INTEGER; BEGIN ZAHL:=0; FOR I:=0 TO 11 DO ZAHL:=ZAHL*2+REGISTER[I]; ZAHL:=ZAHL MOD 4096; IF ZAHL>2047 THEN ZAHL:=ZAHL-4096; WRITELN("DIE ZAHL IM ZEHNERSYSTEM:",ZAHL:5); END; (*========== Hauptprogramm ==========*) BEGIN REPEAT WRITELN("IN WELCHEN MODUS MOECHTEN SIE"); WRITE("DEC->DUAL(1) ODER DUAL->DEC(2) BEI 'E' ENDE");READLN;READ(MODUS); IF MODUS="1" THEN BEGIN WRITE("DEZIMALZAHL");READLN;READ(ZAHL);DECDUAL(ZAHL);END ELSE IF MODUS="2" THEN BEGIN EINGABE(REGISTER);DUALDEC(REGISTER);END; WRITELN; UNTIL MODUS="E"; END.