Beiträge durchsuchen

Integerzahlen in römische Zahlen umwandeln

Römische Zahlen verwenden kein Stellenwertsystem, wie wir es z.B. im Dezimalsystem tun. Folgende Funktion wandelt Integer-Zahlen in ihr römisches Äquivalent um:

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

So kann die Funktion beispielsweise aufgerufen werden:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit2.Text := DecToRoman(StrToInt(Edit1.Text));
end;