Bonjour,
Il faut que je traduise l'algorithme suivant en C++.
Cependant, j'ai beaucoup de mal, surtout avec la "boucle recommencer".
Y a-t-il une âme charitable qui pourrait m'aider?
Pièce jointe 153184
Version imprimable
Bonjour,
Il faut que je traduise l'algorithme suivant en C++.
Cependant, j'ai beaucoup de mal, surtout avec la "boucle recommencer".
Y a-t-il une âme charitable qui pourrait m'aider?
Pièce jointe 153184
Essaye d'écrire l'algorithme toi-même, et après nous pourrons t'aider s'il y a des choses à corriger, mais demander à ce qu'on fasse l'exercice à ta place ne semble pas être la méthode la plus judicieuse pour apprendre.
Je suis venu sur ce forum afin que l'on m'aide pas que l'on fasse mon travail à ma place.
J'ai dû mal m'exprimer.
j'arrive à faire la boucle du jeu pour trouver la variable à découvrir, mais je ne sais pas comment faire en sorte (je ne sais pas le coder) que le jeu afficher perdu quand on n'a plus de coup (tout en restant cohérent dans le code) et la boucle pour redémarrer le programme....
voila ce que j'ai coder pour l'instant (et qui marche)...
Code:
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
31
32
33
34
35 #include <iostream> using namespace std; int main() { int coup,c,k=10; cout<<"En combien de coup pensez vous pouvoir reussir?"<<endl; cin>>coup; while (coup!=0) { cout<<"Saisissez un chiffre:"<<endl; cin>>c; if(c==k) { cout<<"GAGNE!!!"<<endl; } else if (c>k) { cout<<"en dessous"<<endl; coup--; } else { cout<<"en dessus"<<endl; coup--; } } return 0; }
Il te suffit de l'entourer avec une boucle do-while.
Bonjour.
Sans préjuger de ton code, j'avais cru comprendre qu'il fallait convertir cet algorithme en POO (C++ ici). Ton code ressemble plus à du C qu'à du C++. Es-tu sûr de bien répondre à la question posée ?
Bonjour,
En fait on me demander de créer une application console en C++ répondant à l'algorithme présenter au début du fil.
Je ne comprends pas où placer le "do...while" que l'on me conseille de placer afin que le "jeu", lorsque la variable "coup" est égale à 0 affiche le "recommencer"
pour lequel on saisi une variable "start" qui si elle est égale à Y reprend la boucle du jeu ou si elle est égale à N "return 0".
Si tu veux utiliser un do { } while(); (personnellement j'aurais fais un simple while pour pouvoir facilement limité la portée de la variable r), le code va ressembler à ceci :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 // g++ -Wall -Wextra -Wconversion -Wsign-conversion -std=c++11 -pedantic -fopenmp main.cpp -o main && ./main // g++ -Wall -Wextra -Wconversion -Wsign-conversion -std=c++98 -pedantic -fopenmp main.cpp -o main && ./main #include <iostream> int main() { char r; do { // TODO std::cout << "Recommencer ? (O/N) = " << std::flush; std::cin >> r; } while (r != 'N'); return 0; }
merci de ta réponse mais par rapport à mon code de départ (en "while" ou "do-while"), je l'insère où?
c'est surtout ça mon problème.
j'avais en effet codé un truc bien moins affiné que ton code mais mon gros problème est le positionnement de ces lignes dans la boucle que j'ai codée.
Dans mon code :
- la ligne 11 correspond à « Début »
- la ligne 15 & 16 correspond à « Afficher : Recommencer »
- la ligne 18 correspond à « Choix ? »
- la ligne 20 correspond à « Fin »
Tout le reste doit être mis où il y a le commentaire // TODO (to do peut se traduire par : à faire).
Si tu rencontres d'autre difficultés, il nous faudra ton code pour pouvoir vraiment t'aider.
Merci, grâce à l'indication "géographique" de placement de ce morceau de code, j'ai réussi, en modifiant également mon code.
Merci de votre précieuse aide.
Code:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 #include <iostream> using namespace std; int main() { int coup=0,c,k=10; char r; do { if(coup==0) { cout<<"En combien de coup pensez vous pouvoir reussir?"<<endl; cin>>coup; } cout<<"Saisissez un chiffre:"<<endl; cin>>c; if(c==k) { cout<<"GAGNE!!!"<<endl; coup=0; } else if (c>k) { cout<<"en dessous"<<endl; coup--; } else { cout<<"en dessus"<<endl; coup--; } if(coup==0) { cout<<"PERDU"<<endl; cout << "Recommencer ? (O/N) = " << endl; cin >> r; } } while (r != 'N'); return 0; }
Bien ;)
Voici quelques conseils :
- déclare les variables coup, c, k là où tu en as besoin uniquement afin de limiter leur portée (et éviter des erreurs)
- indente correctement ton code
- n'utilise pas using namespace std;
Merci pour les conseils, que dois je utiliser à la place de usingnamespacestd?
c'est quoi indenter?
En tous cas merci, j'ai réussi à comprendre.
Dans un vrai fichier source (par opposition à un fichier d'en-tête), "n'utilise pas using namespace std;" relève plus du dogmatisme qu'autre chose.
Par contre, il ne faut jamais l'utiliser dans un fichier d'en-tête.
L'alternative, c'est de préciser le namespace à chaque fois:
Code:std::cout << "En combien de coups pensez-vous pouvoir reussir?" << std::endl;
Wikipédia - Style d'indentation
Il ne faut pas utiliser using namespace; dans les fichiers d'en-tête.
Dans les fichiers sources, si on l'utilise "mal", les signatures des fonctions peuvent être différentes entre la déclaration (dans le .hpp) et la définition (dans le .cpp) pour une même fonction :(
Il ne reste donc q'une seule utilisation possible (pour moi) : dans le corps des fonctions elle-mêmes. Tant que cela n'améliore pas beaucoup la lisibilité, je le déconseille ; et je le déconseille encore plus pour les débutants afin qu'ils identifient facilement ce qui vient de std (la bibliothèque standard), du langage lui-même ou d'autres bibliothèques.
À partir de là, j'arrive à dire, sans aucune honte, « n'utilise pas using namespace », même si cela n'est pas tout à fait vrai (comme expliqué juste avant) ;)