Bonjour,
J'essaye de réaliser un exercice en C++ mais je n'arrive pas à tester le type d'une variable.
Mon programme demande à l'utilisateur de saisir un mot mais si ce mot est un chiffre (ou en contient un) alors il doit en saisir un nouveau.
Il me semble que dans tout les cas c'est une chaine de caractère que l'utilisateur saisi (via cin >>) : qu'on ai "bonjour" ou "55" c'est une chaine (si je ne me trompe pas)
J'ai crée un tableau avec tout les chiffres de 1 à 9 et je compare chaque lettre du mot saisi avec les valeurs contenues dans ce tableau. Si je trouve une égalité c'est que le mot contient au moins un chiffre et donc je demande à l'utilisateur de ressaisir un nouveau mot.
Quelqu'un pourrait il m'aider à trouver mon erreur ? J'ai essayer plusieurs solutions mais apparemment il n'existe pas de fonction qui donne directement le type d'une variable ou d'un objet, contrairement à d'autres langages...
De plus si quelqu'un connait une méthode efficace pour tester le type des variables ou peut me donner des "conseils de codage" je suis preneur.
Voilà mon code source :
fichier principal (methode main donc ) :
Une fonction et son prototype :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #include <iostream> #include <string> #include <vector> #include "choixMot.h" using namespace std; int main() { string motMystere(""); cout << "Bonjour ! Veuillez saisir le mot que vous voulez faire deviner" << endl; motMystere = choixMot(); cout << "Le mot mystere est : " << motMystere << endl; cout << "Vous pouvez a present commencer a jouer !" << endl; return 0; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 #include "choixMot.h" #include <string> #include <iostream> #include <vector> using namespace std; string choixMot() { bool estUneChaine(true); string motMystere(""); vector<int> tableau(10); for(int i=0; i<10; i++) { tableau[i] = i; } do { cout << "Saisissez le mot : " << endl; estUneChaine = true; getline(cin, motMystere); for(int i=0; i<motMystere.size(); i++) { if(find(tableau.begin(), tableau.end(), motMystere[i])!=tableau.end()) { estUneChaine = false; } } }while((estUneChaine==false) && motMystere.size() > 100); return motMystere; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #ifndef CHOIXMOT_H_INCLUDED #define CHOIXMOT_H_INCLUDED #include <string> #include <vector> std::string choixMot(); #endif // CHOIXMOT_H_INCLUDED
PS : Je débute avec ce langage et je développe sous Code Blocks (8.02)
Partager