Libeller un nombre entier en chaine de caractère

Contenu du snippet

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,"z‚ro");
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();
}

A voir également

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.