Hat dir diese Antwort geholfen?
1 Leser hat sich bedankt
TYPE myPair = RECORD
arab: INTEGER;
rom : STRING;
END;
Hilfsstruktur zum Ablegen der röm. Zahlen. Halt einfach ein Paar, das eine römische auf die entsprechende arabische Zahl mappen soll.
CONST list : ARRAY[1..13] OF myPair = ( (arab:1000; rom:'M'),
[...]
Liste mit Zuordnungen von arab. zu röm. Zahlen. Das ist nötig, weil es auch so Sonderfälle gibt, wie z.B. IX = 9. Es ist möglich, weil die Anzahl der röm. Zahlen nicht so groß ist, sonst hätte man sich da was anderes einfallen lassen müssen.
FOR i:=1 TO 13 DO
Schleife über die obige Liste
divi := numb DIV list[i].arab;
Ganzzahlige Division mit der aktuellen arab. Zahl; z.B. 15 DIV 10 = 1
FOR j:=1 TO divi DO
BEGIN
result := result + list[i].rom;
END;
Hänge die röm. Zahl an das Ergebnis an "so oft wie sie reinpasst"
numb := numb MOD list[i].arab;
Mit dem Rest weiterrechnen; z.B. 15 MOD 10 = 5 (Rest)
Die Idee ist halt, dass du die Zahl nacheinander durch die römischen teilst (angefangen mit der größten) und immer mit dem Rest weiterrechnest.
Beispiel: 939
939 / 1000 = 0, Rest 939 -> Hänge 0 M an das Ergebnis an. Ergebnis: ""
939 / 900 = 1 Rest 39 -> Hänge ein CM an das Ergebnis an. Ergebnis: "CM"
39 / 500 = 0 Rest 39 -> Hänge 0 D an das Ergebnis an. Ergebnis "CM"
[...]
39 / 10 = 3 Rest 9 -> Hänge drei X an das Ergebnis an. Ergebnis : "CMXXX"
9 / 9 = 1 Rest 0 -> Hänge ein IX an das Ergebnis an. Ergebnis: "CMXXXIX"
Übrigens: Am meisten lernt man, wenn man sowas erstmal selbst versucht...