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?
![]()
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?
![]()
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 : 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
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.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
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 ?
Utilisation de Glade avec Gtk+
Code::Blocks et Gtk+ sous Windows
Programmation orientée objet avec Gtk+ v3
- N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk
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 : 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 // 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 : 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
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 C++ : Sélectionner tout - Visualiser dans une fenêtre à part std::cout << "En combien de coups pensez-vous pouvoir reussir?" << std::endl;
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
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)![]()
Partager