Brauche Hilfe bei Zahlen Umwandler

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Brauche Hilfe bei Zahlen Umwandler

    Hey Leute

    Ich hab hier auf einer Page folgenden Code zum Umwandeln von römischen Zahlen gefunden, verstehe ihn aber nicht ganz..

    Quellcode

    1. function DecToRoman(ADecimal: LongInt): string;
    2. const
    3. Romans: array[1..13] of string = ( 'I', 'IV', 'V',
    4. 'IX', 'X', 'XL','L', 'XC', 'C', 'CD', 'D', 'CM', 'M' );
    5. Arabics: array[1..13] of Integer = ( 1, 4, 5,
    6. 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000 );
    7. var
    8. i: Integer;
    9. begin
    10. for i := 13 downto 1 do
    11. while (ADecimal >= Arabics[i]) do
    12. begin
    13. ADecimal := ADecimal - Arabics[i];
    14. Result := Result + Romans[i];
    15. end;
    16. end;
    Alles anzeigen


    Vorallem verstehe ich diesen Teil nicht:

    Quellcode

    1. for i := 13 downto 1 do
    2. while (ADecimal >= Arabics[i]) do
    3. begin
    4. ADecimal := ADecimal - Arabics[i];
    5. Result := Result + Romans[i];


    könnt ihr ihn mir kurz erklären?
    Ich wäre für eure Hilfe sehr, sehr dankbar
    :) :)
  • Der Code geht rückwerts durchs Array.
    Solange der Prüfwert größer ist wie der Wert an der aktuellen Position im Array wird der dazugehörige Rähmische Zahl mit dem String verknüpft und der Prüfwert um den Arraywert veringert.

    Beispiel: 949
    Größergleich 1000? Nein
    Größergleich 900? Ja, Result='CM', Prüwert=49
    Größergleich 900? Nein
    Größergleich 500? Nein
    Größergleich 400? Nein
    Größergleich 100? Nein
    Größergleich 50? Nein
    Größergleich 40? Ja, Result='CMXL', Prüfwert=9
    Größergleich 40? Nein
    Größergleich 10? Nein
    Größergleich 9? Ja, Result='CMXLIX', Prüwert=0
    ....
    Ausgabe: CMXLIX

    Hoffe das ist nun klar.

    Mfg Rushh0ur