[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; }