Module Module1
Sub Main()
Dim NombreDec, NombreRom As String
Console.Write("Tapez votre nombre entier: ")
NombreDec = Console.ReadLine
If NombreDec = String.Empty Then Exit Sub
If Val(NombreDec) = 0 Then Exit Sub
NombreRom = ToRoman(Val(NombreDec))
Console.WriteLine(NombreDec & " = " & NombreRom)
NombreDec = TODec(NombreRom)
Console.WriteLine(NombreRom & " = " & NombreDec)
Console.WriteLine("Appuyer sur la touche <<Entrée>> pour sortir")
Console.Read()
End Sub
Function ToRoman(ByVal i As Integer) As String
Dim Roman() As String = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}
Dim RomanV() As Integer = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}
Dim cpt, index, j As Integer
Dim res As String
cpt = i
If i = 0 Then Return "Erreur"
While cpt > 0
For j = LBound(Roman) To UBound(Roman)
index = RomanV(j)
If (cpt index) > 0 Then
res &= Roman(j)
cpt -= index
Exit For
End If
Next
End While
Return res
End Function
Function TODec(ByVal valeur As String) As Integer
Dim sum As Integer
Dim incr As Integer
Dim decr As Integer
If String.IsNullOrEmpty(valeur) Then Exit Function
For i As Integer = valeur.Length - 1 To 0 Step -1
decr = 0
Select Case valeur.Substring(i, 1)
Case "I"
incr = 1
Case "V"
incr = 5
If (i <> 0) AndAlso (valeur.Substring(i - 1, 1) = "I") Then decr = 1
Case "X"
incr = 10
If (i <> 0) AndAlso (valeur.Substring(i - 1, 1) = "I") Then decr = 1
Case "L"
incr = 50
If (i <> 0) AndAlso (valeur.Substring(i - 1, 1) = "X") Then decr = 10
Case "C"
incr = 100
If (i <> 0) AndAlso (valeur.Substring(i - 1, 1) = "X") Then decr = 10
Case "D"
incr = 500
If (i <> 0) AndAlso (valeur.Substring(i - 1, 1) = "C") Then decr = 100
Case "M"
incr = 1000
If (i <> 0) AndAlso (valeur.Substring(i - 1, 1) = "C") Then decr = 100
Case Else
Return -1
End Select
sum = sum + incr
If decr <> 0 Then
sum = sum - decr
i -= 1
End If
Next
Return sum
End Function
End Module
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.