PROBLEME MENU! EN Langage C
Fermé
elayyy
-
1 juil. 2009 à 08:36
xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 - 1 juil. 2009 à 09:37
xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 - 1 juil. 2009 à 09:37
A voir également:
- PROBLEME MENU! EN Langage C
- Langage ascii - Guide
- Menu déroulant excel - Guide
- Windows 11 menu démarrer classique - Guide
- Langage binaire - Guide
- Canon quick menu - Télécharger - Utilitaires
6 réponses
xav3601
Messages postés
3288
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
2 mars 2016
311
1 juil. 2009 à 08:51
1 juil. 2009 à 08:51
A mon avis ton problème viens de là:
return menu();
et:
return jeu();
Si tu fais un return menu(), ca signifie que tu finis ton main!Donc une fois qu'il a fini menu() il n'as plus rien à faire.
Il faudrait modifier, dans ton main, tous les return menu() en menu() tout simple. Et de même pr les return jeu. Comme ca la seule possibilité pour finir ton jeu serait de taper 3 dans le menu, c'est ce que tu veux il me semble?
Et si je puis me permettre, il serait plus approprié d'utiliser la récursivité pour ta fonction jeu!
Tu aurais un code plus propre et plus simple ;)
return menu();
et:
return jeu();
Si tu fais un return menu(), ca signifie que tu finis ton main!Donc une fois qu'il a fini menu() il n'as plus rien à faire.
Il faudrait modifier, dans ton main, tous les return menu() en menu() tout simple. Et de même pr les return jeu. Comme ca la seule possibilité pour finir ton jeu serait de taper 3 dans le menu, c'est ce que tu veux il me semble?
Et si je puis me permettre, il serait plus approprié d'utiliser la récursivité pour ta fonction jeu!
Tu aurais un code plus propre et plus simple ;)
euh...Merci de ta réponse!
Mais c'est quoi la récursivité???
et pour enlever les return menu etc...
Il faut bien que je les remplace! Pourrais-tu m'expliquer tout ça s'il te plait?
Merci d'avance!
Mais c'est quoi la récursivité???
et pour enlever les return menu etc...
Il faut bien que je les remplace! Pourrais-tu m'expliquer tout ça s'il te plait?
Merci d'avance!
xav3601
Messages postés
3288
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
2 mars 2016
311
1 juil. 2009 à 09:09
1 juil. 2009 à 09:09
Ben je t'ai dis, dans ton main tu remplace:
return menu(); -> menu();
return jeu(); -> jeu();
La récursivité, si tu connais pas, c'est pas grave utilise le pas lol
Sinon fais des recherches sur le net un peu ;)
return menu(); -> menu();
return jeu(); -> jeu();
La récursivité, si tu connais pas, c'est pas grave utilise le pas lol
Sinon fais des recherches sur le net un peu ;)
Ok, j'ai déja regardé sur le Net...Il faut que je me prenne 1heure, c'est tout un cours!!!
Merci pour tes réponses!
à bientôt!
Merci pour tes réponses!
à bientôt!
xav3601
Messages postés
3288
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
2 mars 2016
311
1 juil. 2009 à 09:14
1 juil. 2009 à 09:14
essaye déjà la solution concernant ton problème initial voir si ca marche ^^
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
petit problème: J'ai suivi ce que tu m'a dit, cela ne marche toujour pas...
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int menu (void)
{
int choix=0;
printf ("\n***LE JEU DU NOMBRE MYSTERE***\n\n");
printf ("1.Jouer\n");
printf ("2.Lire les instructions\n");
printf ("3.Quitter\n\n");
printf ("entrez votre choix:\n");
scanf ("%d", &choix);
return choix;
}
int jeu ()
{
srand(time(NULL));
const int MAX = 100, MIN = 1;
int nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
int choix=0,tapez1=0;
do
{
printf ("\n\nEntrez le nombre mystere:\n\n");
scanf ("%d", &choix);
printf ("\n\n");
if (choix > nombreMystere)
{
printf ("Trop Grand!\n\n");
}
else if (choix < nombreMystere)
{
printf ("Trop Petit!\n\n");
}
else
{
printf ("Bravo, vous avez trouve le nombre mystere!\n\n");
}
}
while (choix != nombreMystere);
printf ("pour retourner au menu tapez 1:\n\n");
scanf ("%d", &tapez1);
if (tapez1 == 1)
{
menu();
}
else
{
printf ("erreur!\n\n");
}
}
int main ()
{
int tapez1=0;
switch (menu())
{
case 1:
jeu();
break;
case 2:
printf ("***LE JEU DU NOMBRE MYSTERE***\n\n");
printf ("Le but de ce jeu est de trouver le nombre que l'ordinateur a en memoire( entre 1 et 100).\n");
printf ("Bien sur, il faut le trouver avec le moins de coups possible.\n\n");
printf ("pour retourner au menu tapez 1\n");
scanf ("%d", &tapez1);
if (tapez1==1)
{
menu();
}
else
{
printf ("erreur!\n\n");
}
break;
case 3:
0;
break;
default:
printf ("vous croyez tromper la machine??? Non, ce n'est pas possible,LA MACHINE EST PLUS FORTE QUE VOUS!!!\n\n\n");
menu();
break;
}
}
Alors docteur, c'est grave?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int menu (void)
{
int choix=0;
printf ("\n***LE JEU DU NOMBRE MYSTERE***\n\n");
printf ("1.Jouer\n");
printf ("2.Lire les instructions\n");
printf ("3.Quitter\n\n");
printf ("entrez votre choix:\n");
scanf ("%d", &choix);
return choix;
}
int jeu ()
{
srand(time(NULL));
const int MAX = 100, MIN = 1;
int nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
int choix=0,tapez1=0;
do
{
printf ("\n\nEntrez le nombre mystere:\n\n");
scanf ("%d", &choix);
printf ("\n\n");
if (choix > nombreMystere)
{
printf ("Trop Grand!\n\n");
}
else if (choix < nombreMystere)
{
printf ("Trop Petit!\n\n");
}
else
{
printf ("Bravo, vous avez trouve le nombre mystere!\n\n");
}
}
while (choix != nombreMystere);
printf ("pour retourner au menu tapez 1:\n\n");
scanf ("%d", &tapez1);
if (tapez1 == 1)
{
menu();
}
else
{
printf ("erreur!\n\n");
}
}
int main ()
{
int tapez1=0;
switch (menu())
{
case 1:
jeu();
break;
case 2:
printf ("***LE JEU DU NOMBRE MYSTERE***\n\n");
printf ("Le but de ce jeu est de trouver le nombre que l'ordinateur a en memoire( entre 1 et 100).\n");
printf ("Bien sur, il faut le trouver avec le moins de coups possible.\n\n");
printf ("pour retourner au menu tapez 1\n");
scanf ("%d", &tapez1);
if (tapez1==1)
{
menu();
}
else
{
printf ("erreur!\n\n");
}
break;
case 3:
0;
break;
default:
printf ("vous croyez tromper la machine??? Non, ce n'est pas possible,LA MACHINE EST PLUS FORTE QUE VOUS!!!\n\n\n");
menu();
break;
}
}
Alors docteur, c'est grave?
xav3601
Messages postés
3288
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
2 mars 2016
311
1 juil. 2009 à 09:31
1 juil. 2009 à 09:31
Faudrait que tu me dise l'erreur que tu obtiens!!
Et pis t'as enlevé tous les return lol
Du coup dans le case 3 tu te retrouves avec un 0;
au lieu de return 0;
Et pis t'as enlevé tous les return lol
Du coup dans le case 3 tu te retrouves avec un 0;
au lieu de return 0;
et bien, c'est exactement la même chose! La deuxième fois, le programme se termine!
Merci de ton aide!
PS: Je vais remettre le return devant le 0;!
je crois que je me suis faché avec le return!^^
Merci de ton aide!
PS: Je vais remettre le return devant le 0;!
je crois que je me suis faché avec le return!^^
xav3601
Messages postés
3288
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
2 mars 2016
311
1 juil. 2009 à 09:37
1 juil. 2009 à 09:37
Evidement ^^
Il faut que tu mettre une boucle infini dans ton main(), sinon il ne fait qu'un passage par le switch ;)
Il faut que tu mettre une boucle infini dans ton main(), sinon il ne fait qu'un passage par le switch ;)