Developpez.com

Télécharger gratuitement le magazine des développeurs, le bimestriel des développeurs avec une sélection des meilleurs tutoriels

Developpez.com - 4D
X

Choisissez d'abord la catégorieensuite la rubrique :


Convertir les chiffres arabes en chiffres romains (limité de 1 à 3999)

Date de publication : 17/05/2006

Par Olivier Marolleau (Technicien Support Technique)
 



Produit : 4D toutes versions  ·  Plateforme : Mac & Win


Que ce soit pour donner un style à une application, pour correspondre à des normes d'état civil, ou pour archiver d'anciens documents, les chiffres romains sont toujours présents dans notre vie quotidienne.

Il est donc intéressant de posséder une fonction qui permette de convertir les chiffres arabes en chiffres romains.

La fonction ci-dessous effectuera cette tâche. Il suffit simplement de lui passer un entier en paramètre. Cette fonction renverra alors soit le chiffre romain correspondant à l'entier passé, soit le mot "error" si le chiffre passé est en dehors des possibilités de la fonction.


Code de la fonction :


      `---------- Declaration variable ---------

   C_ENTIER($1)
   C_ALPHA(32;$0)

   TABLEAU ALPHA(1;$_Nb_10;4)
   TABLEAU ALPHA(1;$_Nb_05;3)

   C_ALPHA(32;$Roman_Chiffre)
   C_ENTIER LONG($Chiffre)
   C_ENTIER LONG($Arabes_Chiffre)

      `---------- Initialisation variable ---------

   $_Nb_10{1}:="I"
   $_Nb_10{2}:="X"
   $_Nb_10{3}:="C"
   $_Nb_10{4}:="M"

   $_Nb_05{1}:="V"
   $_Nb_05{2}:="L"
   $_Nb_05{3}:="D"

   $Arabes_Chiffre:=$1

      `---------- Convertion Chiffre V1 ---------

   Si (($Arabes_Chiffre>0) & ($Arabes_Chiffre<4000))

      Boucle ($x1;3;0;-1)

         $Chiffre:=$Arabes_Chiffre\(10^$x1)

         Si ($Chiffre>=1)

            $Arabes_Chiffre:=$Arabes_Chiffre-($Chiffre*(10^$x1))

            Au cas ou

               : ($Chiffre<=3)
                  Boucle ($x2;$Chiffre;1;-1)
                     $Roman_Chiffre:=$Roman_Chiffre+$_Nb_10{$x1+1}
                  Fin de boucle

               : ($Chiffre=9)
                  $Roman_Chiffre:=$Roman_Chiffre+$_Nb_10{$x1+1}+$_Nb_10{$x1+2}

               : ($Chiffre=4)
                  $Roman_Chiffre:=$Roman_Chiffre+$_Nb_10{$x1+1}+$_Nb_05{$x1+1}

               Sinon
                  $Roman_Chiffre:=$Roman_Chiffre+$_Nb_05{$x1+1}
                  Boucle ($x2;$Chiffre-5;1;-1)
                     $Roman_Chiffre:=$Roman_Chiffre+$_Nb_10{$x1+1}
                  Fin de boucle

            Fin de cas

         Fin de si

      Fin de boucle

      $0:=$Roman_Chiffre

   Sinon

      $0:="Error"

   Fin de si



Valid XHTML 1.1!Valid CSS!

Copyright © 2006 4D s.a. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Contacter le responsable de la rubrique 4D