Convertir les nombres arabes en chiffres romain...

Soyez le premier à donner votre avis sur cette source.

Vue 20 986 fois - Téléchargée 313 fois

Description

ca converti les nombres arabes en chiffres romains (de 0 à 3999 )

Source / Exemple :


// convertit les chiffres arabes en chiffres romains.

#include <iostream.h>
#include <math.h>

int main(){

	
int n;
int temp=0;
char romain[45];
int curseur=0;
int chiffre[10];
int i;
int dizaine;
int ch;
int w=0;
char start='o';

while (start=='o'||start=='O'||start=='oui'){

w=0;
temp=0;
curseur=0;

for (int ab=0;ab<15;ab++){chiffre[ab]=0;}
cout<<"donne le nombre a convertir"<<endl;
cin>>n;

for (long unite=pow(10,9);temp==0;unite/=10){

chiffre[curseur]=n/unite;

n-=chiffre[curseur]*unite;

curseur++;

if (unite==1){temp=1;
chiffre[curseur]-=1;}

}

for (i=0;i<10;i++){

	

ch=chiffre[i];
dizaine=10-i;

//debut

char resultat[4]={'a','a','a','a'};

switch (ch){

case 1:

	switch (dizaine){
		case 1:
			resultat[0]='I';
			break;

		case 2:
			resultat[0]='X';
			break;

		case 3:
			resultat[0]='C';
			break;

		case 4:
			resultat[0]='M';
			break;

		default:

			break;
	}

	break;

case 2:
	switch (dizaine){
		case 1:
			resultat[0]='I';
			resultat[1]='I';
			break;

		case 2:
			resultat[0]='X';
			resultat[1]='X';
			break;

		case 3:
			resultat[0]='C';
			resultat[1]='C';
			break;

		case 4:
			resultat[0]='M';
			resultat[1]='M';
			break;

		default:
			break;
	}
	break;

case 3:
	switch (dizaine){
		case 1:
			resultat[0]='I';
			resultat[1]='I';
			resultat[2]='I';
			break;

		case 2:
			resultat[0]='X';
			resultat[1]='X';
			resultat[2]='X';
			break;

		case 3:
			resultat[0]='C';
			resultat[1]='C';
			resultat[2]='C';
			break;

		case 4:
			resultat[0]='M';
			resultat[1]='M';
			resultat[2]='M';
			break;

		default:
			break; 

					}
	break;	

	case 4:
	switch (dizaine){
		case 1:
			resultat[0]='I';
			resultat[1]='V';
			break;

		case 2:
			resultat[0]='X';
			resultat[1]='L';
			break;

		case 3:
			resultat[0]='X';
			resultat[1]='D';
			break;

		default:
			break;
	}
	break;

case 5:

	switch (dizaine){
		case 1:
			resultat[0]='V';
			break;

		case 2:
			resultat[0]='L';
			break;

		case 3:
			resultat[0]='D';
			break;

		default:
			break;
	}	break;

case 6:
	switch (dizaine){
		case 1:
			resultat[0]='V';
			resultat[1]='I';
			break;

		case 2:
			resultat[0]='L';
			resultat[1]='X';
			break;

		case 3:
			resultat[0]='D';
			resultat[1]='C';
			break;

		default:
			break;
	}
	break;

case 7:
	switch (dizaine){
		case 1:
			resultat[0]='V';
			resultat[1]='I';
			resultat[2]='I';
			break;

		case 2:
			resultat[0]='L';
			resultat[1]='X';
			resultat[2]='X';
			break;

		case 3:
			resultat[0]='D';
			resultat[1]='C';
			resultat[2]='C';
			break;

		default:
			break;
	}
	break;

case 8:
	switch (dizaine){
		case 1:
			resultat[0]='V';
			resultat[1]='I';
			resultat[2]='I';
			resultat[3]='I';
			break;

		case 2:
			resultat[0]='L';
			resultat[1]='X';
			resultat[2]='X';
			resultat[3]='X';
			break;

		case 3:
			resultat[0]='D';
			resultat[1]='C';

			break;

		default:
			break;
	}
	break;

case 9:
	switch (dizaine){
		case 1:
			resultat[0]='I';
			resultat[1]='X';
			break;

		case 2:
			resultat[0]='X';
			resultat[1]='C';
			break;

		case 3:
			resultat[0]='C';
			resultat[1]='M';
			break;

		default:
			break;
	}
	break;

default:

	break;
} // switch ch

//fin

	for (int z=0;z<4;z++){
		
		if (resultat[z]!='a')
				{
				romain[w]=resultat[z];
				w++;
				}}

} // for ts les caractères
		

cout<<"\n";

	for (curseur=0;curseur<10;curseur++){cout<<" "<<romain[curseur];}

	cout<<"\nrecommencer ? (o/n)"<<endl;
	cin>>start;

	} //while
return 0;}

Codes Sources

A voir également

Ajouter un commentaire Commentaires
cs_badjio Messages postés 3 Date d'inscription mardi 12 mai 2009 Statut Membre Dernière intervention 4 janvier 2011
25 mai 2009 à 15:48
Bonjour, je suis débutant en programmation et je dois faire un programme permettant de convertir des chiffres arabes en chiffres romains, j'ai déja écrit une partie du programme mais cela ne marche pas et j'ai un peu de mal a comprendre la technique utilisée ci dessus, voici mon programme, si quelqu'un peu me donner un petit coup de main, merci beaucoup.

PS ma technique consiste à dissocier les milliers, des centaines, des dizaines, des unités. Le programme marche pour le compilateur mais les resultats obtenus sont incorects.

Enfin voila, merci d'avance

#include <stdio.h>
#include <stdlib.h>

int main()
{
int reponse=1;

while (reponse) // reponse==0 : sortir, reponse==1 : continuer
{
int entree;

printf("\n Veuillez saisir un nombre compris entre 1 et 3999 : ");
scanf("%d", &entree);
printf("\n");

if(entree<1 || entree>3999)
{
printf(" Erreur ! Nombre incorrect\n");
continue; //On retourne au début de la boucle while
}

int milliers=entree/1000;
int centaines=(entree-milliers*1000)/100;
int dizaines=((entree-milliers*1000)-centaines*100)/10;
int unites=entree%10;

int i;for (i=0; i<milliers; i++)
printf("M");

if (centaines/5==0)
{
printf("D");
centaines=centaines-5;
}
for (i=0; i<centaines; i++)
printf("C");

if (dizaines/5==0)
{
printf("L");
dizaines=dizaines-5;
}
for(i=0; i<dizaines;i++)
printf("X");
if (unites/5==0)
{
printf("V");
unites=unites-5;
}
for (i=0; i<unites; i++)
printf ("I");

printf("\n\n Voulez-vous recommencer? (oui :1, non : 0)\n Choix = ");
scanf ("%d", &reponse);
}
}
cs_miss fafa Messages postés 46 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 25 février 2009
24 déc. 2008 à 13:49
slt tt le monde c bien comme code !!!!!!!!!
chapeau
nadege980 Messages postés 1 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 9 octobre 2005
9 oct. 2005 à 10:12
Merci.C'est super
cs_kjus Messages postés 269 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 9 juin 2003
22 mai 2002 à 08:30
merci ;)
et également pour le commentaire sur le pivot..
cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 4
21 mai 2002 à 23:34
C'est original comme code.
Bravo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.