Page 1 sur 1
Convertisseur chiffre en chiffre Romain.
Posté : ven. 15 mars 2019 13:04
par Mavrick084
Bonjour, j'aimerai créer un convertisseur en chiffre Romain.
Exemple je tape 10 je clic sur Convertir et le résultat s'affiche X
Pourriez-vous m'indiquer un exemple de comment procéder ou me montrer la voie ?
Merci.
Re: Convertisseur chiffre en chiffre Romain.
Posté : ven. 15 mars 2019 21:51
par mikell
Je te laisse analyser le mécanisme (très simple) et construire la gui
$x = 1958 Msgbox(0,"", _convert
($x) )Func _convert
($n) If $n < 1 or $n > 3999 Then Return "invalide" Local $a = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1] Local $r = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"] $s = "" For $i = 0 to 12 While $n >= $a[$i] $n -= $a[$i] $s &= $r[$i] Wend If $n = 0 Then Exitloop Next Return $sEndFunc
Re: Convertisseur chiffre en chiffre Romain.
Posté : ven. 15 mars 2019 22:44
par jchd
J'avais ça sous le code (le même vu de profil), mais que je n'avais pas limité à seulement 3 M (donc 3999).
Code : Tout sélectionner
Local $n
For $i = 1 To 100
$n = Random(1, 9999, 1)
ConsoleWrite($n & @TAB & _IntToRoman($n) & @LF)
Next
Func _IntToRoman($iIn)
Local Static $aRomanDigits = [[1000, 'M'], [900, 'CM'], [500, 'D'], [400, 'CD'], [100, 'C'], [90, 'XC'], [50, 'L'], [40, 'XL'], [10, 'X'], [9, 'IX'], [5, 'V'], [4, 'IV'], [1, 'I']]
Local $sOut, $v
If $iIn < 0 Or $iIn > 9999 Then Return SetError(1, 0, $sOut)
For $i = 0 To UBound($aRomanDigits) - 1
$v = Floor($iIn / $aRomanDigits[$i][0])
If $v Then
$sOut &= _StringRepeat($aRomanDigits[$i][1], $v)
$iIn -= $v * $aRomanDigits[$i][0]
EndIf
Next
Return $sOut
EndFunc
Re: Convertisseur chiffre en chiffre Romain.
Posté : sam. 16 mars 2019 09:56
par mikell
Mon code n'est qu'une transcription en AutoIt d'un javascript trouvé kekpart sur le net (et qui contenait cette limite)
Mais en fait c'est à 4999 qu'il faudrait limiter pour garder une notation correcte, au-delà il existe une notation particulière avec des caractères spéciaux, et à 1 dans l'autre sens (les romains ne connaissaient pas le zéro)
Re: Convertisseur chiffre en chiffre Romain.
Posté : sam. 16 mars 2019 14:28
par jchd
En laissant à part les multiples extensions qui ont été utilisées ou considérées et comme il n'y a pas de consensus sur le choix entre elles, on reste deans les symboles basiques. On peut cependant aller au-delà de 4999 du fait que le nombre de M n'est pas limité à 3 ou 4. Certes, pour représenter 43597 ça devient totalement débile. Pour zéro je renvoie une chaîne vide, ce qui n'est pas vraiment incorrect.