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.
_________________
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.
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:
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 ;)
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!
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.