|
|
|
|
|
|
|
|
|
|
|
{ Name : Hannes P. und Manuel T. Schule : Gewerbeoberschule "Max Valier" Bozen Klasse : 3Ia Beschreibung : Es sollen Zahlen vom Dezimalsystem, mithilfe von Verbundtypen, ins roemische Zahlensystem umgewandelt werden. Lizenz : GNU}
PROGRAM Verbund;
USES Crt;
TYPE troem = RECORD wert : INTEGER; rstr : STRING; END;
troemtab = ARRAY [1..13] OF troem;
{Prozedur zur Initialisierung der roemischen Zeichen}
PROCEDURE Initroem(VAR rt : troemtab);
BEGIN rt[1].wert := 1000; rt[1].rstr := 'M'; rt[2].wert := 900; rt[2].rstr := 'CM'; rt[3].wert := 500; rt[3].rstr := 'D'; rt[4].wert := 400; rt[4].rstr := 'CD'; rt[5].wert := 100; rt[5].rstr := 'C' ; rt[6].wert := 90; rt[6].rstr := 'XC'; rt[7].wert := 50; rt[7].rstr := 'L'; rt[8].wert := 40; rt[8].rstr := 'XL'; rt[9].wert := 10; rt[9].rstr := 'X'; rt[10].wert := 9; rt[10].rstr := 'IX'; rt[11].wert := 5; rt[11].rstr := 'V'; rt[12].wert := 4; rt[12].rstr := 'IV'; rt[13].wert := 1; rt[13].rstr := 'I'; END; {END OF PROCEDURE}
{Funktion um vom Dezimalsystem ins römische Zahlensystem umzuwandeln}
FUNCTION Int2roem(zahl : INTEGER; rt : troemtab) : STRING;
VAR i, j : INTEGER; {Laufvariablen} k : INTEGER; roemstr : STRING; BEGIN roemstr := ''; i := 1; WHILE (zahl > 0) AND (i <= 13) DO BEGIN k := zahl DIV rt[i].wert; IF k > 0 THEN BEGIN FOR j := 1 TO k DO roemstr := roemstr + rt[i].rstr; zahl := zahl - k * rt[i].wert; END; {END of IF} i := i + 1; END; {END of WHILE-Schleife} Int2roem := roemstr; END; {END of FUNCTION}
VAR {Lokale Variablen des Hauptprogramms} roemtab : troemtab; dezizahl: INTEGER; BEGIN {BEGIN des Hauptprogramms} ClrScr; Initroem(roemtab); REPEAT Write('Dezimalzahl...: '); Readln(dezizahl); IF dezizahl <= 3999 THEN BEGIN Writeln(Int2roem(dezizahl,roemtab)); END ELSE Writeln('Sie muessen eine Zahl kleiner als 4000 eingeben'); UNTIL dezizahl = 0; Readln; END.
|
|
|
|
|
|
|
|
|
Letzte Änderung: 07.02.2007
© Pädagogisches Institut für die deutsche Sprachgruppe
- Bozen. 2000 -
|
|
|
|
|
|
|
|
|