Conversion chiffres arabes en chiffre romain

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Conversion chiffres arabes en chiffre romain

par caroube » 23 oct. 2008, 19:42

Tu trouveras des idées dans les commentaires de cette page http://fr2.php.net/base_convert

ou en tapant conversion nombre romain php dans Google.

Conversion chiffres arabes en chiffre romain

par BaLiSTiK » 23 oct. 2008, 18:02

Bonjour,

J ai un code de conversion de chiffres arabes en chiffres romains à faire et je bloque sur un truc de débutant.
J ai divers chiffres dans un tableau, et je souhaites récuperer que ceux dont la somme correspond au nombre que je vais convertir.
Mon tableau contient les chiffres
$aNbreElem = array(1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1);
Donc par exemple, si je veux faire 16, je dois prendre 10, 5 et 1. Et je bloque completement làd essus ><.
Pour l'instant j'en suis à :
je parcours tout le tableau, je prend l element en dessous de mon chiffre. J additionne cet element avec celui d apres. Et c est apres que je en sais plus comment faire.
function ConvertArabRomain($chiffreArabe){
		
		$chiffreArabe; //Chiffre arabe en entree
		$chiffreRomain = ""; //chiffre romain en sortie
		
		$aNbreElem = array(1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1);		
		$chiffreRomElem = array("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"	);

		if (1 <= $chiffreArabe && $chiffreArabe <= 3999) {
			//Parcours du tableau
			for($i = 0; $i<count($aNbreElem);$i++){	
				//On ne selectionne que les elements inferieurs au chiffre à convertir	
				if($chiffreArabe >  $aNbreElem[$i]){
					$somElem = $aNbreElem[$i] + $aNbreElem[$i+1];
					if($somElem > $chiffreArabe ){
						$result += $aNbreElem[$i];				
					}
				//$result += $aNbreElem[$i];
				$result .= $result.'&nbsp;';
				}//fin if 
			}//fin for
			echo $result; // LA CONVERSION AVEC L AUTRE TABLEAU SERA ICI

			//$this->m_sMessage = '<p>Conversion de '.$chiffreArabe.' en chiffre romain : '.$chiffreRomain.'</p>';
      		} else {
         		$this->m_sMessage = 'Veuillez rentrer un chiffre entre 1 et 3999 svp.';
      		
		echo $this->m_sMessage;
	}//fin methode
Par la suite, avec un autre tableau, je récupere donc la suite de chiffre (par ex : 16 : 10 - 5 - 1) que je convertirai en chiffre romain pour avoir XVI

Merci