Conversion (chiffres en lettres)

pocaontace Messages postés 2 Statut Membre -  
 alex07 -
salut , svp je cherche un programme en c qui permet de convertir un nombre compris entre 0 et 99 999 999 999 en lettres .
j'ai enormement besoin de votre aide
Merci d'avance
A voir également:

5 réponses

pocaontace Messages postés 2 Statut Membre 5
 
dzl ça diffère completement du c , voilà j'ai un prog en c mais je l'ai pas bien compris :#include<stdio.h>

//--------------------------------------------------------------------
// Conversion d'un nombre de 3 chiffres en lettres
//--------------------------------------------------------------------
void Nombre3EnLettres(int n3, int cardinal)
{
static char *unite[] =
{
"", "UN ", "DEUX ", "TROIS ", "QUATRE ",
"CINQ ", "SIX ", "SEPT ", "HUIT ", "NEUF ",
"DIX ", "ONZE ", "DOUZE ", "TREIZE ", "QUATORZE ",
"QUINZE ", "SEIZE ", "DIX-SEPT ", "DIX-HUIT ", "DIX-NEUF "
};

static char *dizaine[] =
{
"", "", "VINGT", "TRENTE", "QUARANTE", "CINQUANTE",
"SOIXANTE", "SOIXANTE-DIX", "QUATRE-VINGT", "QUATRE-VINGT-DIX"
};

int nb_centaine = n3 / 100;
int nb_dizaine = (n3 - (nb_centaine * 100)) / 10;
int nb_unite = n3 - nb_centaine * 100 - nb_dizaine * 10;

if(nb_centaine > 0)
{
if(nb_centaine > 1)
printf("%s", unite[nb_centaine]);
if(cardinal || nb_dizaine || nb_unite || (nb_centaine == 1))
printf("CENT ");
else
printf("CENTS ");
}

switch(nb_dizaine)
{
case 0:
printf("%s", unite[nb_unite]);
break;

case 1:
printf("%s", unite[nb_unite + 10]);
break;

case 7:
printf("%s", dizaine[6]);
if(nb_unite == 1)
printf(" ET ");
else
printf("-");

printf("%s", unite[nb_unite + 10]);
break;

case 8:
printf("%s", dizaine[8]);
if(nb_unite == 0)
if(cardinal)
printf(" ");
else
printf("S ");
else
printf("-");

printf("%s", unite[nb_unite]);
break;

case 9:
printf("%s-%s", dizaine[8], unite[nb_unite + 10]);
break;

default:
printf("%s", dizaine[nb_dizaine]);
if(nb_unite == 0)
printf(" ");
if(nb_unite == 1)
printf(" ET ");
if(nb_unite > 1)
printf("-");

printf("%s", unite[nb_unite]);
break;
}
}

//--------------------------------------------------------------------
// Conversion d'un nombre en lettres [1 -> 999999999]
//--------------------------------------------------------------------
void NombreEnLettres(long n)
{
int nb_million, nb_millier, nb_unite;

if(n < 1e9)
{
nb_million = n / 1e6;
nb_millier = (n - (nb_million * 1e6)) / 1e3;
nb_unite = n - nb_million * 1e6 - nb_millier * 1e3;

Nombre3EnLettres(nb_million, 0);

switch(nb_million)
{
case 0: break;
case 1: printf("MILLION "); break;
default: printf("MILLIONS "); break;
}

switch(nb_millier)
{
case 0: break;
case 1: printf("MILLE "); break;
default:
Nombre3EnLettres(nb_millier, 1);
printf("MILLE ");
break;
}

Nombre3EnLettres(nb_unite, 0);
}
else
printf("Nombre trop grand !");
}

//--------------------------------------------------------------------
int main(void)
{
long n = 0;

do
{
printf("\nEntrez un nombre [1->999999999] [0 pour quitter]: ");
scanf("%ld", &n);
printf("\n");
NombreEnLettres(n);
printf("\n");
}
while(n != 0);

return 0;
}
si vous pouvez m'aider à le comprendre n'hezitez pas
J'ai enormement besoin de votre aide
5
Armojax Messages postés 1916 Date d'inscription   Statut Membre Dernière intervention   1 529
 
Re, pocaontace,

Désolé aussi, mais je ne pratique pas couramment le C.
Ajx.
0
Armojax Messages postés 1916 Date d'inscription   Statut Membre Dernière intervention   1 529
 
.../...
3
salut
 
tu peux télécharger une macro qui permettra la conversion des nombres en lettres.

http://perso.orange.fr/gerard.g/logi/excel/excel.htm
2
Armojax Messages postés 1916 Date d'inscription   Statut Membre Dernière intervention   1 529
 
Bonjour pocaontace,

A tout hasard : il y a une solution au n° 2 de ce poste :
http://www.commentcamarche.net/forum/affich-1451038-procedure-en-VBA

Bien sûr, ce n'est pas en C, c'est du VBA, mais ça peut peut-être fournir une trame ?

Bonne journée.
Ajx.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
alex07
 
il me faudarit le même programme mais en scheme
0