Soyez le premier à donner votre avis sur cette source.
Vue 20 986 fois - Téléchargée 313 fois
// 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;}
25 mai 2009 à 15:48
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);
}
}
24 déc. 2008 à 13:49
chapeau
9 oct. 2005 à 10:12
22 mai 2002 à 08:30
et également pour le commentaire sur le pivot..
21 mai 2002 à 23:34
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.