arabische zahl in römische zahl umwandeln?

4 Antworten

Das ist gar nicht mal so kompliziert in einem Programm umzusetzen.

Du hast je 10er-Potenz ein (1, 5)-Paar. Du brauchst also nur die einzelnen Ziffern betrachten. Als Beispiel nehme ich mal die Zahl 1947.

Wir fangen hinten an, du beginnst bei der Potenz 0. DIe Numerale sind hier (I, V): Die letzte Ziffer lässt sich mit Modulo 10 ermitteln. Also: 1943%10 => 7.
Wir wollen nicht, dass das gleiche Numeral 4 mal vorkommt...das wäre bei 4 oder 9..also alles gut. Passt 5 in die Zahl rein? Ja, also schreiben wir V auf und ziehen 5 vom Rest ab. Nun füllen wir auf mit Rest mal I, also kommt VII raus.
Anschließend dividieren wir die Zahl durch 10, es bleibt 194. Und wir springen zur nächsten Potenz.

Potenz 1 --> (X, L):
Wir haben die 194 finden die Ziffer 4, die wollen wir nicht. Der Trick ist hier, die Zahl einfach um eins Hochzuzählen und uns zu merken, dass wir noch einen Übertrag haben. Und nochmal neu zu beginnen.
Also von vorn, wir haben nun die 195 und einen Übertrag. Übrig bleibt die 5. Ein L. Den Übertrag werden wir los, wenn wir vor das letzte Numeral ein X packen. Also ist das Ergebnis aus dieser Potenz XL (bzw mit dem vorherigem Ergebnis XLVII). Zur Nächsten Potenz mit der 19.

Potenz 2 --> (C, D)
Wir haben die 19, finden 9. Wollen wir nicht, also inkrementieren und Übertrag.
Es bleibt 20, eine 0 am Ende, nix zu tun. Für den Übertrag würden wir gern C vor das letzte Numeral einsetzen, macht aber bei 0 keinen Sinn, den merken wir uns. Weiter mit 2

Potenz 3 --> (M, ?)
Wir haben 2 und einen Übertrag. 5 passt nicht rein, also 2 mal M. Wir haben noch den Übertrag in Form C übrig. den setzen wir vor das letzte Numeral. Also MCM. Kombiniert mit unserem letzten Zwischenergebnis als MCMXLVII.

Der Vorgang lässt sich einfach in ein Programm packen, wenn du hängst, kann ich dir bestimmt ein Beispiel geben.

DLI

oder willst du ein Programm schreiben, dass das macht?

Hier ist eine Tabelle:

(Erinnere dich, dass 4 z.B IV ist und nicht IIII, gleiches für 40 <-> XL, 445 <-> CDXLV

Bild zum Beitrag

Woher ich das weiß:Berufserfahrung – Programmierer
 - (programmieren, Programmiersprache)
programmerxd3 
Fragesteller
 22.01.2019, 18:28

und wie soll ich es in c programmieren das er mir DLI am Bildschirm anzeigt wenn ich 551 eingebe

0