Meine Lösung in VBA, berücksichtigt die Subtraktionsregel
(Allerdings werden bei Zahlen über 19999 einfach noch mehr "A" eingefügt)
Code:
Public Sub numbers()
MsgBox "Römische Zahl:" & vbCrLf & vbCrLf & convert((InputBox("Dezimalzahl:", "Dez > Röm Converter";)))
End Sub
Public Function convert(value As Integer)
Dim result, roman(14) As String
roman(0) = "A"
roman(1) = "MA"
roman(2) = "M"
roman(3) = "CM"
roman(4) = "D"
roman(5) = "CD"
roman(6) = "C"
roman(7) = "XC"
roman(8) = "L"
roman(9) = "XL"
roman(10) = "X"
roman(11) = "IX"
roman(12) = "V"
roman(13) = "IV"
roman(14) = "I"
Dim dez(14) As Integer
dez(0) = 5000
dez(1) = 4000
dez(2) = 1000
dez(3) = 900
dez(4) = 500
dez(5) = 400
dez(6) = 100
dez(7) = 90
dez(8) = 50
dez(9) = 40
dez(10) = 10
dez(11) = 9
dez(12) = 5
dez(13) = 4
dez(14) = 1
For i = 0 To 14
While (value / dez(i)) >= 1
result = result & roman(i)
value = value - dez(i)
Wend
Next
convert = result
End Function