Transformer un nombre entier en chaine de caractère
Je n'est pas utiliser de fonctions dans ce code
Mais vous pouvez le changer et l'améliorer
Source / Exemple :
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{unsigned long nombre,dizaine,dix_reste,centaine,centaine_reste,mille,mille_reste,million,million_reste,milliard,milliard_reste;
struct libeller1{char zero_seize[10];}libeller_zero_seize[20];
struct libeller2{char dizaines[20];}libeller_dizaines[20];
struct libeller3{char puissances[10];}libeller_puissances[20];
//affectation des libellers
//libeller de 0
16
strcpy(libeller_zero_seize[0].zero_seize,"zro");
strcpy(libeller_zero_seize[1].zero_seize,"un");
strcpy(libeller_zero_seize[2].zero_seize,"deux");
strcpy(libeller_zero_seize[3].zero_seize,"trois");
strcpy(libeller_zero_seize[4].zero_seize,"quatre");
strcpy(libeller_zero_seize[5].zero_seize,"cinq");
strcpy(libeller_zero_seize[6].zero_seize,"six");
strcpy(libeller_zero_seize[7].zero_seize,"sept");
strcpy(libeller_zero_seize[8].zero_seize,"huit");
strcpy(libeller_zero_seize[9].zero_seize,"neuf");
strcpy(libeller_zero_seize[10].zero_seize,"dix");
strcpy(libeller_zero_seize[11].zero_seize,"onze");
strcpy(libeller_zero_seize[12].zero_seize,"douze");
strcpy(libeller_zero_seize[13].zero_seize,"treize");
strcpy(libeller_zero_seize[14].zero_seize,"quatorze");
strcpy(libeller_zero_seize[15].zero_seize,"quinze");
strcpy(libeller_zero_seize[16].zero_seize,"seize");
//libeller les dizaines
strcpy(libeller_dizaines[1].dizaines,"dix");
strcpy(libeller_dizaines[2].dizaines,"vingt");
strcpy(libeller_dizaines[3].dizaines,"trente");
strcpy(libeller_dizaines[4].dizaines,"quarante");
strcpy(libeller_dizaines[5].dizaines,"cinquante");
strcpy(libeller_dizaines[6].dizaines,"soixante");
strcpy(libeller_dizaines[7].dizaines,"soixante-dix");
strcpy(libeller_dizaines[8].dizaines,"quatre-vingt");
strcpy(libeller_dizaines[9].dizaines,"quatre-vingt-dix");
//libeller les puissances
strcpy(libeller_puissances[0].puissances,"cent");
strcpy(libeller_puissances[1].puissances,"mille");
strcpy(libeller_puissances[2].puissances,"million");
strcpy(libeller_puissances[3].puissances,"milliard");
//menu principales
mille=0;mille_reste=0;
million=0;million_reste=0;
milliard=0;milliard_reste=0;
clrscr();
printf("Donner l'entier
libeller : ");
scanf("%lu",&nombre);
retour:
if((nombre>=0)&&(nombre<=16))
printf("%s",libeller_zero_seize[nombre].zero_seize);
if((nombre>=17)&&(nombre<=99))
{
dizaine=nombre/10;
dix_reste=nombre%10;
if((dix_reste==0)&&(nombre!=80)) printf("%s",libeller_dizaines[dizaine].dizaines);
else
if (nombre==80) printf("%ss",libeller_dizaines[dizaine].dizaines);
else
if(((nombre>=71)&&(nombre<=76))||((nombre>=91)&&(nombre<=96)))
{
printf("%s",libeller_dizaines[dizaine-1].dizaines);
printf("-%s",libeller_zero_seize[dix_reste+10].zero_seize);
}
else
if (dix_reste!=1)
{
printf("%s",libeller_dizaines[dizaine].dizaines);
printf("-%s",libeller_zero_seize[dix_reste].zero_seize);
}
else
{
printf("%s",libeller_dizaines[dizaine].dizaines);
printf(" et %s",libeller_zero_seize[dix_reste].zero_seize);
}
}
if((nombre>=100)&&(nombre<=999))
{
centaine=nombre/100;
centaine_reste=nombre%100;
if(centaine!=1)
{
printf("%s",libeller_zero_seize[centaine].zero_seize);
if (centaine_reste)
printf(" %s ",libeller_puissances[0].puissances);
else
printf(" %ss",libeller_puissances[0].puissances);
}
else printf("%s ",libeller_puissances[0].puissances);
if(centaine_reste)
{
nombre=centaine_reste;
goto retour;
}
}
if((nombre>=1000)&&(nombre<=999999))
{
mille=nombre/1000;
mille_reste=nombre%1000;
if(mille==1)
printf("%s ",libeller_puissances[1].puissances);
else
{
nombre=mille;
goto retour;
}
}
if(mille)
{
if(mille!=1) printf(" %s ",libeller_puissances[1].puissances);
mille=0;
if(mille_reste!=0)
{
nombre=mille_reste;
goto retour;
}
}
if((nombre>=1000000)&&(nombre<=999999999))
{
million=nombre/1000000;
million_reste=nombre%1000000;
nombre=million;
goto retour;
}
if(million)
{
if(million==1) printf(" %s ",libeller_puissances[2].puissances);
else printf(" %ss ",libeller_puissances[2].puissances);
million=0;
if(million_reste!=0)
{
nombre=million_reste;
goto retour;
}
}
if((nombre>=1000000000)&&(nombre<=4294967295))
{
milliard=nombre/1000000000;
milliard_reste=nombre%1000000000;
nombre=milliard;
goto retour;
}
if(milliard)
{
if(milliard==1) printf(" %s ",libeller_puissances[3].puissances);
else printf(" %ss ",libeller_puissances[3].puissances);
milliard=0;
if(milliard_reste!=0)
{
nombre=milliard_reste;
goto retour;
}
}
getch();
}
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.