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