Römische Zahlen Algorithmus Hilfe

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Römische Zahlen Algorithmus Hilfe

    Hey Leute,



    also ich hab das problem, dass ich kein Plan habe wie ich mir ein Algorithmus

    in Pseudocode für die umwandlung von römischen zahlen in dezimalzahlen erstellen soll.
    Dabei soll davon ausgegangen werden, dass eine richtige
    Zeichenfolge eingegeben wird, also keine besondere Prüfung der Regeln.



    Das ganze von Dezimal -> Römisch hab ich schon geschafft, was sagt ihr dazu. Ist das richtig ? :)


    Pseudocode:






    Code:
    Legende:<-:Speicherin

    Höchstmögliche RömischeZiffer <- M =1000, CM =900 D =500,
    CD =400, C =100, XC =90, L=50, XL =40, X =10, IX =9,
    V =5, IV =4, I =1// mit Sonderfällen ( CM = 900, CD = 400…)

    tempGanzzahlErgebnis <-0Dezimalzahl<- x // x == 1-3999Ermittel Höchstmögliche RömischeZiffer

    Wiederhole,Solange x >= ermittelte Höchstmögliche RömischeZiffer

    tempGanzzahlErgebnis <- x dividiert durch ermittelte Höchstmögliche RömischeZiffer

    gib tempGanzzahlErgebnis multipliziert mit ermittelte Höchstmögliche RömischeZiffer aus

    x <- subtrahiere(tempGanzzahlErgebnis mutlipliziert mit ermittelte Höchstmögliche RömischeZiffer)von x

    Im Falle Römisch -> Dezimal fällt mir nix ein kann mir jemand helfen
  • Zuerst einmal, benutze bitte die Code-Tags für einen lesbaren Code. Und es sollte eine Schleife ausreichen: Zieh 1000 ab solanges es geht und schreib 'M' hin usw. Für römische Zahlen ohne Subtraktionsregel ist der Algorithmus recht einfach:

    Source Code

    1. Zeichenkette = 'MCLI'
    2. Zahl = 0
    3. solange lenght(Zeichenkette) > 0
    4. begin
    5. ch = 1. Zeichen von Zeichenkette
    6. wenn ch == 'M' -> Zahl = Zahl + 1000
    7. wenn ch == 'D' -> Zahl = Zahl + 500
    8. wenn ch == 'C' -> Zahl = Zahl + 100
    9. wenn ch == 'L' -> Zahl = Zahl + 50
    10. wenn ch == 'X' -> Zahl = Zahl + 10
    11. wenn ch == 'V' -> Zahl = Zahl + 5
    12. wenn ch == 'I' -> Zahl = Zahl + 1
    13. entferne 1. Zeichen von Zeichenkette
    14. end
    15. Ausgabe von Zahl
    Display All

    Versuch mal die Sonderfälle (IV, IX, XL, XC, CD, CM) selber einzuarbeiten. Bei Problemen meldest du dich noch mal.

    Thomas