[C++] programme de conversion chiffres en mot
Résolu
bonjour,
je voudrais si c'est possible avoir de l'aide à propos d'un programme en langage C++ pour la convertion d'un chiffre en mot en respectant l'orthographe français.
par exemple:
- 512 => Cinq cente douze.
merci d'avance.
je voudrais si c'est possible avoir de l'aide à propos d'un programme en langage C++ pour la convertion d'un chiffre en mot en respectant l'orthographe français.
par exemple:
- 512 => Cinq cente douze.
merci d'avance.
A voir également:
- [C++] programme de conversion chiffres en mot
- Trousseau mot de passe iphone - Guide
- Mot de passe - Guide
- Mot de passe administrateur - Guide
- Mot de passe bios perdu - Guide
- Voir mot de passe wifi android - Guide
1 réponse
L'idée c'est de lire un entier, et de créer une fonction permettant d'extraire pour un nombre compris entre 0 et 999 :
- les nombres inférieurs à 20
- le chiffre des centaines
- pour les nombres supérieur à 999, le des blocks de trois chiffres en partant de la droite. Exemple :
54 894 213 => {54,894,213}
car il suffit ensuite d'écrire le chiffre du bloc suivit de mille/millions/milliards etc... Voici un début de code
- les nombres inférieurs à 20
- le chiffre des centaines
- pour les nombres supérieur à 999, le des blocks de trois chiffres en partant de la droite. Exemple :
54 894 213 => {54,894,213}
car il suffit ensuite d'écrire le chiffre du bloc suivit de mille/millions/milliards etc... Voici un début de code
#include <iostream>
#include <cassert>
#include <vector>
template <Tstream>
void ecrire_nb20(Tstream & out,const unsigned int & x){
assert(x<10);
switch(x){
case 0: out << "zéro"; break;
case 1: out << "un"; break;
//...
case 19: out << "dix-neuf"; break;
default: break;// n'arrive jamais grâce au assert
}
}
template <Tstream>
void ecrire_dizaine_unite(Tstream & out,const unsigned int & x){
assert(x<9);
const unsigned int dizaine = floor(x/10);
const unsigned int unite = x - dizaine;
assert(unite<9);
assert(dizaine<9);
if(dizaine>1 && dizaine < 5){
switch(dizaine){
case 2: out << "vingt"; break;
case 3: out << "trente"; break;
//...
}
if(unite==1) out <<" et ";
else out << ' ';
ecrire_nb20(x);
}else{
switch(dizaine){
case 6:
case 7: out << "soixante"; ecrire_nb20(x-60);break;
case 8:
case 9: out << "quatre-vingt"; ecrire_nb20(x-80); break;
default: break;
}
}
}
// ecrire la fonction qui décompose en bloc de trois chiffres
std::vector<unsigned short int>
decompose_par_groupe3(const unsigned int & x){
std::vector<unsigned short int>
//...
return res;
}
template <Tstream>
void ecrire_entier(Tstream & out,const unsigned int & x){
std::vector<unsigned short int> blocs;
...
}
int main(){
unsigned int x;
std::cout << "saisir un entier : " << std::endl;
std::cin >> x;
return 0;
}