Convertir nombres en lettre

sofaranaya Messages postés 1 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 9 janvier 2010 - 9 janv. 2010 à 23:02
memspell Messages postés 4 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 23 janvier 2010 - 23 janv. 2010 à 13:01
Bonsoir tout le monde!

J'ai grand besoin d'une aide à propos d'un programme en c++. Voilà en ce moment je travaille sur un programme qui doit convertir des nombres en lettre. Les nombres à convertir sont des entiers et c'est de 0 à 10 000. Pour l'instant j'arrive à convertir les nombres jusqu'à 16. Mon soucis c'est que je n'arrive pas à faire correctement le calcul pour les nombre composés comme par exemple 17 sachant que 17 c'est dix(dizaine) sept(unité). Voici le code source qui me permet de convertir de 0 à 16.:

int main ()
{
// actions
t_tab_mot tab_unites = { {"zero"},
{"un"},
{"deux"},
{"trois"},
{"quatre"},
{"cinq"},
{"six"},
{"sept"},
{"huit"},
{"neuf"}
};

t_tab_mot tab_dizaine1 = { {"dix"},
{"onze"},
{"douze"},
{"treize"},
{"quatorze"},
{"quinze"},
{"seize"}
};

t_tab_mot tab_dizaine2 = { {"vingt"},
{"trente"},
{"quarante"},
{"cinquante"},
{"soixante"}
};

t_tab_mot tab_centaines = { {"cent"},
{"cents"}
};

t_tab_mot tab_milliemes = { {"mille"}
};

int nombre;
int indice;
int dizaine_nombre;
int unites_nombre;


do{
cout << "Veuillez entrer un nombre";
cout << endl;
cin >> nombre;
if (nombre >=0 && nombre <=9)
cout <<" Le nombre entré est : " << tab_unites[nombre] << endl;
else

if (nombre >=10 && nombre <=16)
{ indice = nombre - 10;
cout <<" Le nombre entré est : " << tab_dizaine1[indice] << endl;
}


}while (nombre >=0 && nombre <=19);
aprés pour le calcul des dizaine composé comme le "17" j'ai fais les lignes suivantes:
do{
cout << "Veuillez entrer un nombre";
cout << endl;
cin >> nombre;
if (nombre >=17 && nombre <=19)
{ dizaine_nombre = nombre / 10;
unites_nombre = nombre % 10;
cout<<"le nombre entré est : " << tab_dizaine1 [dizaine_nombre - 1];
cout<< tab_unites [unites_nombre];
}
}while (nombre >=17 && nombre <=23);

Je vous remercie de bien vouloir m'aider s'il vous plaît.

1 réponse

memspell Messages postés 4 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 23 janvier 2010
23 janv. 2010 à 13:01
Je crois que tu tiens le bon bout. Ce n'est pas vraiment un problème de C++ plustôt d'algorithmie.

Cela devrais t'aider, maintenant je serais incollable pour remplir mes chèques hehe

#include <string>
using namespace std;

static const char* zero = "zero";
static const char* dizaines[] = { {"NA"}, {"un"}, {"deux"}, {"..."}, {"soixante et onze"}, {"..."}, {"quatre-vingt-dix-neuf"} };
static const char* centaines[] = { {"cents"}, {"cent"} };
static const char* mille = "milles";

string to_string(size_t n)
{
if( 0 == n )
return zero;
string number("");
if( n >= 1000 )
{
if( n >= 2000 )
number += dizaines[n / 1000] + string(" ");
number += mille;

n -= 1000*(n/1000);
if( 0 == n )
return number;
number += " ";
}
if( n >= 100 && n < 1000 )
{
if( n >= 200 )
number += dizaines[n / 100] + string(" ") ;
if( 100 == n )
number += centaines[0];
else
number += centaines[1];

n -= 100*(n/100);
if( 0 == n )
return number;
number += " ";
}
if( n > 0 && n < 100 )
number += dizaines[n];
return number;
}
0
Rejoignez-nous