[C++] programme de conversion chiffres en mot
Résolu/Fermé
yam_j
Messages postés
3
Date d'inscription
dimanche 10 décembre 2006
Statut
Membre
Dernière intervention
13 avril 2007
-
10 déc. 2006 à 00:46
mamiemando Messages postés 33334 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 novembre 2024 - 11 déc. 2006 à 21:37
mamiemando Messages postés 33334 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 novembre 2024 - 11 déc. 2006 à 21:37
A voir également:
- [C++] programme de conversion chiffres en mot
- Voir mot de passe wifi android - Guide
- Mot de passe administrateur - Guide
- Identifiant et mot de passe - Guide
- Programme demarrage windows 10 - Guide
- Trousseau mot de passe iphone - Guide
1 réponse
mamiemando
Messages postés
33334
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 novembre 2024
7 801
11 déc. 2006 à 21:37
11 déc. 2006 à 21:37
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; }