You are not logged in.

  • Login

Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

Sanjaplaya

Unregistered

1

Tuesday, March 8th 2011, 8:38pm

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..

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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;


Vorallem verstehe ich diesen Teil nicht:

Source code

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


könnt ihr ihn mir kurz erklären?
Ich wäre für eure Hilfe sehr, sehr dankbar
:) :)

2

Wednesday, March 9th 2011, 2:56am

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

Sanjaplaya

Unregistered

3

Friday, March 11th 2011, 10:22am

Hey,

Vielen Dank, jetzt ist es für mich einfacher und übersichtlicher :)

Similar threads

Social bookmarks