Seite 2 von 2
Verfasst: 17.11.2008 18:41
von mback2k
Ja, mein Account wurde versehentlich gelöscht. Nunja, kann man nix machen. Hab schon mit Robert drüber gesprochen, meine alten Posts können mir nicht wieder zugewiesen werden, da die Admins keinen MySQL Zugang haben.
Verfasst: 18.11.2008 20:17
von helpy
Hier mein Versuch:
Code: Alles auswählen
EnableExplicit
Procedure.s Dec2Rom(Dec.i)
Protected Rom.s = ""
Protected stepDec.i = 1000
While stepDec
If Dec >= stepDec
Select stepDec
Case 1000 : Rom + "M"
Case 900 : Rom + "CM"
Case 500 : Rom + "D"
Case 400 : Rom + "CD"
Case 100 : Rom + "C"
Case 90 : Rom + "XC"
Case 50 : Rom + "L"
Case 40 : Rom + "XL"
Case 10 : Rom + "X"
Case 9 : Rom + "IX"
Case 5 : Rom + "V"
Case 4 : Rom + "IV"
Case 1 : Rom + "I"
EndSelect
Dec - stepDec
Else
Select stepDec
Case 1000 : stepDec = 900
Case 900 : stepDec = 500
Case 500 : stepDec = 400
Case 400 : stepDec = 100
Case 100 : stepDec = 90
Case 90 : stepDec = 50
Case 50 : stepDec = 40
Case 40 : stepDec = 10
Case 10 : stepDec = 9
Case 9 : stepDec = 5
Case 5 : stepDec = 4
Case 4 : stepDec = 1
Case 1 : stepDec = 0
EndSelect
EndIf
Wend
ProcedureReturn Rom
EndProcedure
Procedure.i Rom2Dec(Rom.s)
Protected Dec.i = 0
Protected cut.i
Rom = UCase(Rom)
While Rom <> ""
If Left(Rom,1) = "M" : Dec + 1000 : cut = 1
ElseIf Left(Rom,2) = "CM" : Dec + 900 : cut = 2
ElseIf Left(Rom,1) = "D" : Dec + 500 : cut = 1
ElseIf Left(Rom,2) = "CD" : Dec + 400 : cut = 2
ElseIf Left(Rom,1) = "C" : Dec + 100 : cut = 1
ElseIf Left(Rom,2) = "XC" : Dec + 90 : cut = 2
ElseIf Left(Rom,1) = "L" : Dec + 50 : cut = 1
ElseIf Left(Rom,2) = "XL" : Dec + 40 : cut = 2
ElseIf Left(Rom,1) = "X" : Dec + 10 : cut = 1
ElseIf Left(Rom,2) = "IX" : Dec + 9 : cut = 2
ElseIf Left(Rom,1) = "V" : Dec + 5 : cut = 1
ElseIf Left(Rom,2) = "IV" : Dec + 4 : cut = 2
ElseIf Left(Rom,1) = "I" : Dec + 1 : cut = 1
Else : cut = 1
EndIf
Rom = Right(Rom, Len(Rom)-cut)
Wend
ProcedureReturn Dec
EndProcedure
Define rom.s
Macro TEST(__number__)
rom = Dec2Rom(__number__)
Debug Str(__number__) + " => " + rom + " => " + Str(Rom2Dec(rom))
EndMacro
TEST(1)
TEST(2)
TEST(3)
TEST(4)
TEST(5)
TEST(6)
TEST(9)
TEST(10)
TEST(11)
TEST(14)
TEST(19)
TEST(20)
TEST(1984)
TEST(1780)
TEST(1799)
TEST(1497)
- Das 5000er Zeichen habe ich nicht berücksichtigt!
- Die römische Zahl wird nicht auf Korrektheit überprüft!
- Falsche Zeichen in der römischen Zahl werden ignoriert!
cu, guido
Verfasst: 26.12.2008 18:25
von Andesdaf
Hey, klappt super

Verfasst: 02.01.2009 13:34
von GCD_Chris
IIII für 4 muß nicht pauschal falsch sein. IV ist auch eine Abkürzung des römischen Gottes Jupiter. Siehe dazu im Wiki, Kapitel "Besonderheiten".
Verfasst: 02.01.2009 18:15
von Kaeru Gaman
QUID LICET IOVI
NON LICET BOVI
.. da sieht man auch, warum IV die Abkürzung sein kann... xD