Convertir les nombres arabes en chiffres romain...

Soyez le premier à donner votre avis sur cette source.

Vue 19 891 fois - Téléchargée 275 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
-
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
50
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
25 février 2009
-
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
-
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
-
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
2 -
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.