RÖMISCHE ZAHLEN
-
wie ist der befehl in c++ dafür?
also wenn ich 99 / 10 teile habe ich 9 rest 9 und dann rest nochmal umwandeln?
-
meinst du dass ich von 100 anfangen soll?
Ja. Wikipedia schlägt das übrigens auch vor:
http://de.wikipedia.org/wiki/Römische_Zahlen#Einfache_Umrechnungalso wenn ich 99 / 10 teile habe ich 9 rest 9 und dann rest nochmal umwandeln?
Die Rechnung stimmt. Den Ansatz verstehe ich aber nicht: weil du gar nicht teilen musst, sondern subtrahieren. Die römischen Zahlen kommen eben durch Addieren zustande.
wie ist der befehl in c++ dafür?
Wenn du 98 durch 10 teilen willst:
int quotient = 98 / 10; // quotient ist 9 int rest = 98 % 10; // rest ist 8
Aber ich denke nicht, dass du das brauchen wirst.
-
wie soll ichn das sonst machen?
hast du ne andere lösungsvorschlag...
-
Zum Beispiel so:
1. Nachsehen, ob die Zahl >= 100 ist. wenn ja: 2. Hundert abziehen, und ein "C" schreiben. 3. Gehe zu 1. wenn nein: 2. 100 ist zu groß, du musst es durch 50 und "L" (usw.) ersetzen. Wenn du bei 1 angelangt bist, und 1 zu gross ist, bist du fertig. 3. Gehe zu 1.
Auf diese Weise baust du dir die römische Zahl von hinten nach vorne zusammen. Also am Ende umdrehen.
Dazu brauche ich nur >= und Subtraktionen.Wenn mich nicht alles täuscht, hat dust ein anderes Verfahren skizziert. Aber das soll er dir erklären.
-
stimmt das so?
http://img20.imageshack.us/img20/7482/80710496.th.jpg
-
Also ich habe es mir damals einfach gemacht. Ich habe die einfache Regel von wikipedia angewandt und dann ersetzt: Klick
-
knivil schrieb:
Also ich habe es mir damals einfach gemacht. Ich habe die einfache Regel von wikipedia angewandt und dann ersetzt: Klick
Interessant. Mit nachträglichen Textersetzungen hatte ich auch geliebäugelt. Was gibt Dein Programm für 999 aus?
-
stimmt das so?
http://img20.imageshack.us/img20/7482/80710496.th.jpgKannst du mir das in eine Sprache übersetzen, die ich verstehe? Oder (noch besser) in eine, die mein Computer versteht?
-
Fuer 999: CMXCIX! Nach Regel 7 auf http://www.diaware.de/html/roemzahl.html geht IM nicht.
-
knivil schrieb:
Fuer 999: CMXCIX!
Die spinnen, die Römer.
-
volkard schrieb:
Die spinnen, die Römer.
Und stell dir erstmal vor, du musst schriftlich Addieren, Subtrahieren, Multiplizieren und Dividieren ...
-
hmm schoen xD aber dass muss ich in einem struktogramm umsetzen..
er bewertet nur s.gramm
-
Es wurde die Lösung doch schon so gut wie genannt (bis auf das Umdrehen am Ende, das brauchst du nicht).
Also:
Schleife die überprüft ob Zahl > 0
Im Schleifenkörper mit Fallauswahl überprüfen wie groß Zahl ist= 50: ergebnis := ergebnis + "C" ; Zahl := Zahl - 50
= 40: ergebnis := ergebnis + "XL" ; Zahl := Zahl - 40
usw.
Hinter while dann noch die Ausgabe.Eventuell "größer als 50" ersetzen durch "liegt zwischen 50 und 89" - musst du mal in deinen Unterlagen nachsehen wie das gefordert ist.
-
trozdem brauche ich ein struktogramm
-
ups hab die letzen posts net gesehen ich werde es mal versuchen
-
http://img692.imageshack.us/img692/5684/romisch.jpg
und stimmt das so?
-
Wenn du es so schreibst kannst du die äußere while-Schleife weglassen. Und in der letzten while-Schleife hast du einen Fehler in der Bedingung.
Sind die ersten beiden Anweisungen Vorgaben? Falls ja dann solltest du das ganze mit 2 Schleifen nur machen.
Eine äußere die den Index der beiden Felder hochzählt und eine innere die dann die Werte ausgibt. Also statt x >= 90 dann x >= a[index] und bei Ausgabe dann Ausgabe a[index]. Verkürzt das ganze dann auch ungemein.