Hallo!
Mein Weihnachtsgeschenk an euch: Einen funktionierenden Code, der arabische Dezimalsazahlen >=1 in römische Zahlen umwandelt.
Funktioniert garantiert richtig!
Würde mich freuen, wenn dieser Thread wieder auflebt und ihr vielleicht performantere Versionen postet!
Die Handhabung ist denkbar einfach: Oben steckt man einen positiven Quad rein, unten kommt die zahl in römischer Schreibweise wieder heraus.
Code: Alles auswählen
Procedure.s Dec2Rome(number.q) ; AND51 / Dec-2007
Protected result.s, temp=number/1000
If temp > 0 ;{ thounsand's
result=Space(temp)
ReplaceString(result, " ", "M", 2)
number-temp*1000
EndIf ;}
While number > 99 ;{ hundred's
temp=number/100
Select temp
Case 1 To 3
result+Space(temp)
ReplaceString(result, " ", "C", 2)
Case 4
result+"CD"
Case 5 To 8
result+"D"
temp=5
Case 9
result+"CM"
EndSelect
number-temp*100
Wend ;}
While number > 9 ;{ ten's
temp=number/10
Select temp
Case 1 To 3
result+Space(temp)
ReplaceString(result, " ", "X", 2)
Case 4
result+"XL"
Case 5 To 8
result+"L"
temp=5
Case 9
result+"XC"
EndSelect
number-temp*10
Wend ;}
While number ;{ one's
temp=number
Select temp
Case 1 To 3
result+Space(temp)
ReplaceString(result, " ", "I", 2)
Case 4
result+"IV"
Case 5 To 8
result+"V"
temp=5
Case 9
result+"IX"
EndSelect
number-temp
Wend ;}
ProcedureReturn result
EndProcedure
For n=30 To 230 Step 21
Debug Str(n)+" to rome: "+Dec2Rome(n)
Nextt