MATH_ArabeVersRomain [Utilitaires]
Par Olivier Deschanels (Math4D v2)
Nouvelle recherche
Si (Faux)
` MATH_ArabeVersRomain [Olivier Deschanels 27/2/3]
` Elément du projet Vitruve (c) 1991
` ---------------------------------------------
` Conversion d'un entier en chaine de chiffre romain;
` Note : les entiers suffisent car les romains ne traitaient pas de grands nombre
` ---------------------------------------------
` MATH_ArabeVersRomain (Entier) -> TexteRésultat
` ---------------------------------------------
` MATHERROR
` 0 -> Pas d'erreur
` ---------------------------------------------
`
Fin de si
C_ALPHA(255;$0;$resultat)
C_ENTIER($1;$chiffre)
C_BOOLEEN($fin)
C_ALPHA(2;$d;$c;$u)
C_ALPHA(4;$aj)
`initialisation
$fin:=Faux
$chiffre:=$1
$resultat:=""
MATHERROR:=0
`calcul
Repeter
$num:=$chiffre
Au cas ou
: ($num>999)
$aj:="M"*Num(Sous chaine(Chaine($chiffre);1;1))
: ($num>99)
$u:="C"
$c:="D"
$d:="M"
: ($num>9)
$u:="X"
$c:="L"
$d:="C"
Sinon
$u:="I"
$c:="V"
$d:="X"
Fin de cas
Si ($num<1000)
$num:=Num(Sous chaine(Chaine($chiffre);1;1))
$aj:=""
Au cas ou
: ($num<4)
$aj:=$u*$num
: ($num=4)
$aj:=$u+$c
: ($num=5)
$aj:=$c
: ($num<9)
$aj:=$c+($u*($num-5))
: ($num=9)
$aj:=$u+$d
Fin de cas
Fin de si
$resultat:=$resultat+$aj
$chiffre:=Num(Sous chaine(Chaine($chiffre);2))
$fin:=($chiffre<=0)
Jusque ($fin=Vrai)
$0:=$resultat