Problème C++ instruction de branchement

Fermé
zemvox Messages postés 4 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 5 juillet 2005 - 5 juil. 2005 à 14:07
mamiemando Messages postés 33108 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 mai 2024 - 7 juil. 2005 à 01:59
Bonjour

En fait je débute en programmation et surtout en C++ ... je n'ai pas encore acheté de bouquin et les tutos que j'ai trouvé sont soit trs ciblés sur certains problèmes soit trop baclé.

En fait j'ai écrit un programme de jeu pour deviner la lettre à trouver en fonction d'un certain nombre de coup.

Ca donne ça :

#include <iostream.h>

void main()

{

int coup ;
char c, choix ;

cin>>coup ;

while (coup!=0)
{
coup=coup-1 ;
cin>>c ;
if (c=='k')
cout<<"gagne!" ;

if (c>'k')
cout<<"En dessous" ;

if (c<'k')
cout<<"Au dessus" ;
}
cout<<"Recommencer ?" ;
cin>>choix ;
if (choix=='o')



----- En fait je bloque ici, je ne sais pas s'il existe une instruction de branchement qui permette de revenir au début du programme pour l'exécuter :-/

ou alors il y a sans doute d'autres astuces de raisonnement, mais bon mes connaissances en C++ sont assez limités tout comme en programmation.

La suite mettrait fin au programme

if (choix=='n')
cout<<"Fin" ;

}

Alors si quelqu'un pouvait me donner un petit coup de pouce sur une autre façon de voir le problème.

Merci

12 réponses

tafiscobar Messages postés 1277 Date d'inscription jeudi 7 décembre 2000 Statut Contributeur Dernière intervention 26 février 2009 177
5 juil. 2005 à 15:01
salut, ta boucle "while (coup !=0)" tu le mets ds une boucle do { ... }while (recommencer=='o');

Sinon y'a aussi l'instruction goto, en gros tu mets une étiquette devant la boucle while coe ça (on suppose qe le nom de l'etiquette c'est L) : "L: while (..) { ... } ". Ensuite si tu veux retourner vers la boucle while, tu fais "goto L;". Mais attention, ce n'est pas propore d'utiliser des goto...
0
zemvox Messages postés 4 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 5 juillet 2005
5 juil. 2005 à 16:20
J'avais pensé à inclure une boucle Do ... while ça donnait un truc dans ce style :

#include <iostream.h>

void main()

{

int coup ;
char c, choix ;

cin>>coup ;

do
{
while (coup!=0)

{
coup=coup-1 ;
cin>>c ;
if (c=='k')
cout<<"gagne!" ;
if (c>'k')
cout<<"En dessous" ;
if (c<'k')
cout<<"Au dessus" ;
}

cout<<"Recommencer ?" ;
cin>>choix ;
}

while (choix=='o') ;

}



Problème ... ça fait n'importe quoi :-/


j'ai tenté un programme avec ll'instruction goto mais elle ne reprend pas le programme à l'étiquette devant while alors je vais laisser tomber les goto pour le moment : s
0
je te propose cette solution :

#include<iostream.h>
#define max 5

int jeu;

main()
{
int test =5;
while(test!=0)
{
printf("\n");
test=jeu(test);
}
}

int jeu(int coup)
{
int coup =5;
char c, choix ;

while (coup!=0)
{
coup=coup-1 ;
cin>>c ;
if (c=='k')
{
cout<<"gagne! vous l'avez trouvé en %d cout"<<max-coup;
return 0;
}

if (c>'k')
{
cout<<"En dessous. Encore %d essais"<<coup ;
}

if (c<'k')
{
cout<<"Au dessus. Encore %d essais"<<coup ;
}
cout<<"voulez vous réessayer ?" ;
cin>>choix ;

if (choix=='o')
{
return (coup);
}
else if(choix=='n')
{
return 0;
}



normalement ca devrait marcher
0
zut je me suis trompé c'est plutot :

#include<iostream.h>
#define max 5

int jeu(int coup);

main()
{
int test =5;
while(test!=0)
{
printf("\n");
test=jeu(test);
}
}

int jeu(int coup)
{
char c, choix ;

while (coup!=0)
{
coup=coup-1 ;
cin>>c ;
if (c=='k')
{
cout<<"gagne! vous l'avez trouvé en %d essais"<<max-coup;
return 0;
}

if (c>'k')
{
cout<<"En dessous. Encore %d essais"<<coup ;
}

if (c<'k')
{
cout<<"Au dessus. Encore %d essais"<<coup ;
}
cout<<"voulez vous réessayer ?" ;
cin>>choix ;

if (choix=='o')
{
return (coup);
}
else if(choix=='n')
{
printf("\n\nprogramme terminé.");
return 0;
}


apres tu peux faire une fonction qui génère aléatoirement une lettre à trouver, changer le nombre d'essais(y faut juste changer la valeur de test au début du main).
0
zemvox Messages postés 4 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 5 juillet 2005
5 juil. 2005 à 16:18
Ton programme ne marche complètement, mais j'ai compris l'idée, en plus tu démarre avc un nombre de coup défini ... moi je lis le nombre de coup au départ, mais ta manière est intéressante aussi.
0
No-miS Messages postés 274 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 29 novembre 2006 37
5 juil. 2005 à 16:13
Salut,
et apres tu peux essayer de programmer une bataille navale contre le pc, pour te faire plaisir avec les pointeurs. :D mais le probleme, c' est l' affichage qui risque d' etre assez moche dans la fenetre Dos.
Bye.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zemvox Messages postés 4 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 5 juillet 2005
5 juil. 2005 à 17:04
Nan c bon, dans l'esprit de ce que je voulais faire au départ, j'ai réussi ça ...

#include <iostream.h>

void main()

{

int coup ;
char c, choix ;

debut:
cin>>coup ;



while (coup!=0)

{
coup=coup-1 ;
cin>>c ;
if (c=='k')
{
cout<<"gagne!" ;
goto fin ;
}

if (c>'k')
cout<<"En dessous" ;

if (c<'k')
cout<<"Au dessus" ;
}

cout<<"perdu!" ;

fin:
cout<<"Recommencer ?" ;
cin>>choix ;
if (choix=='o')
goto debut ;
if (choix=='n')
cout<<"Fin" ;

}

Merci à tous.
0
moui c'est plus simple c'est sur,on dirait de l'assembleur avec les etiquettes...m'enfin si ca marche c'est le principal...
0
mamiemando Messages postés 33108 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 mai 2024 7 753
5 juil. 2005 à 21:03
Si tu veux faire du c++ contemporain, remplace
#include <iostream.h> 

par :
#include <iostream>
using namespace std; 


@+
0
oui mais chez moi sur le compilateur c++ ca marche pas cette méthode

m'enfin....
0
mamiemando Messages postés 33108 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 mai 2024 7 753
5 juil. 2005 à 21:15
Ca dit quoi de beau ?
0
bah que c'est pas déclaré je crois
0
No-miS Messages postés 274 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 29 novembre 2006 37
6 juil. 2005 à 09:36
Salut
Perso les espaces de nommage j'ai pas approfondi, ça sert à quoi ?
merci, a plus.
0
mamiemando Messages postés 33108 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 mai 2024 7 753
7 juil. 2005 à 01:59
Euh le using namespace permet de sous entendre les std::.

Tu peux définir tes namespaces presos (namespace plop{ ...};) voire les imbriquer afin de hierarchiser tes classes. L'interêt de bien préciser le namespace (std::cout ...), c'est d'éviter les conflits si pour deux namespaces différents, il y a une même classe/membre/structure.
0