Das Programm guckt der Reihe nach, ob die zum Zeichen gehörende
Zahl in die Dezimalzahl reinpasst, wenn ja wird das Zeichen gespeichert
und die Dezimalzahl entsprechend verkleinert.
Pass die Zahl nicht wird das nächst kleinere Zeichen genommen.
Das ist aber noch nicht ganz richtig, denn z.B. die arabische 4 wird römisch
nicht als IIII sondern als IV (1 vor 5) geschrieben.
_________________
     Verfasst am: 25.02.2008, 19:28  Â
Titel:
  Â
erstmal danke für die hilfe. ich hab noch probleme mit den ausnahmen mit 4, 9, 40, ... bis jetzt klappt meine version nur bei 4. ich weiß nicht genau wo ich den ausnahmeblock reinschieben kann, damit es funktioniert.
     Verfasst am: 26.02.2008, 07:45  Â
Titel:
  Â
Wenn ich Deinen Code richtig verstehe, liegt das Problem darin, dass Du die Fälle in zwei komplett getrennten if-Abfragen behandelst.
Nehmen wir dez = 450 an, dann wird ja mit folgenden Zahlen (in dieser Reihenfolge) verglichen: 5000, 4000, 1000, 900, 500 (alles ergebnislos) und 400. Hier ist es aber wieder ohne Ergebnis, da dez/zahlen{i} (= 450 / 100) eben 4.5 ist, und damit nicht im Ausnahmenvektor enthalten.
Ich denke, es wäre besser, die zweite Abfrage so zu ändern:
     Verfasst am: 26.02.2008, 09:46  Â
Titel:
  Â
der code von dir (keloid) läuft bei mir überhaupt nicht. es kommt sofort: Error: The input character is not valid in MATLAB statements or expressions.
ich habs jetzt so versucht, aber auf elseif wird nicht zugegriffen. woran kann das liegen?
     Verfasst am: 26.02.2008, 10:12  Â
Titel:
  Â
Ich hab eine bei mir funktionierende Version in den Anhang gesetzt.
Das Problem an dem elseif ist, dass die Bedingung nie erfüllt ist.
Du müsstest hier Deine Dezimalzahl mit der nächsten 10er-Potenz vergleichen.
Als Beispiel kannst Du die Zahl 400 nehmen. Die erste If-Abfrage fällt drei Mal negativ aus. 5000, 1000 und 500 sind jeweils größer als 400, dadurch ist dez/zahlen{i} kleiner als Null. Insbesondere ist dez/zahlen{i} weder 4 noch 9.
Die jeweils nächsthöhere Zehnerpotenz erhältst Du, indem Du "zahlen{i}" durch "zahlen{ceil((i+1)/2)*2}" ersetzt.
Ausserdem musst Du darauf achten, dass j auch inkremetiert wird, wenn ein Ausnahmefall gefunden wurde. Ansonsten passieren böse Dinge nach dem ersten Fund ;)
     Verfasst am: 09.05.2008, 22:32  Â
Titel:
  Â
Hallo Martin,
Hab irgend wie deine Frage übersehen. Ich poste es gerne! Unter uns ich wäre nicht böse, wenn du es auch gepostet hättest. Aber danke für deine Rücksicht!
hannes123
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Verfasst am: 11.05.2017, 14:16  Â
Titel: römischen ziffern in arabische zahlen umrechnen
  Â
ich bin ebenfalls matlab anfänger und würde hilfe brauchen beim umrechnen von römischen zahlen in arabische
sprich mein hauptprogramm soll erkennen ob es sich um eine römische oder arabische zahl handelt und dementsprechend in das jeweils andere umrechnen
hilfe benötige ich nur bei der funktion für das umrechnen von römischen in arabische zahlen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.