C : Mon programme ne fonctionnes pas
Résolu
Wazza6
Messages postés
180
Date d'inscription
Statut
Membre
Dernière intervention
-
Wazza6 Messages postés 180 Date d'inscription Statut Membre Dernière intervention -
Wazza6 Messages postés 180 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je suis présentement en train d'apprendre le C et j'ai fais un jeu en console mais il ne fonctionne pas...
Voici son code:
Ce qui ne fonctionne pas:
-La variable MAX reste toujours 100
-Quand je choisis quelquechose dans le menu , le programme ne me demandes pas de nombre et je ne peux pas non plus en entrer un (mon do-while ne sembles pas fonctionner)
Comme je vous l'ai dit , je suis débutant et je ne sais pas quelle est mon erreur.
Si quelqu'un pouvais m'aider j'en serais très reconaissant.
Merci
je suis présentement en train d'apprendre le C et j'ai fais un jeu en console mais il ne fonctionne pas...
Voici son code:
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(int argc, char *argv[]) { long MAX= 100, MIN = 1; long numero= 123; long nombreMystere= 0; long menu= 1; srand(time(NULL)); printf("commencer la partie \n"); printf("choisissez votre niveau de difficulté:\n"); printf("1. Facile(de 1 à 100\n"); printf("2. Medium ( de 1 à 500)\n"); printf("3.Difficile ( de 1 à 1000)\n"); printf("4.EXTREME!!!!(de 1 à 10 000)\n"); scanf("%td", &menu); switch (menu) { case 1: printf("Vous avez choisis de 1 a 100\n"); MAX=100; break; case 2: printf("Vous avec choisis de 1 a 500 .Pas pire...\n"); MAX=500; break; case 3: printf("Vous avez choisis de 1 a 1000.Wow...Bonne chance!\n"); MAX=1000; break; case 4: printf("Vous avez choisis de 1 à 10000.Si vous réussissez...Vous êtes un dieu!!!\n"); MAX=10000; break; } while(numero!=1||2||3||4); nombreMystere= (rand() % (MAX - MIN + 1)) + MIN; printf("Entre un chiffre entre 1 et %ld : " , MAX); scanf("%ld" , &numero); do{ printf("Entre un chiffre entre 1 et %ld : " , MAX); scanf("%ld" , &numero); if (numero>nombreMystere) printf("Plus bas! \n"); else if (numero==nombreMystere) printf("JACKPOT!!!! T'as gagne 300 000 000$\n"); else if(numero<nombreMystere) printf("Plus Haut\n"); else printf("Un NOMBRE!!! NOMBRE!!!!!!!\n"); } while (numero!=nombreMystere); system("PAUSE"); return 0; }
Ce qui ne fonctionne pas:
-La variable MAX reste toujours 100
-Quand je choisis quelquechose dans le menu , le programme ne me demandes pas de nombre et je ne peux pas non plus en entrer un (mon do-while ne sembles pas fonctionner)
Comme je vous l'ai dit , je suis débutant et je ne sais pas quelle est mon erreur.
Si quelqu'un pouvais m'aider j'en serais très reconaissant.
Merci
8 réponses
::1-c'est pas li c'est td
::2-Sa mène à quoi tout ça... il est juste avant le do-while pour que sa valeure change avant le do-while...
::2-Sa mène à quoi tout ça... il est juste avant le do-while pour que sa valeure change avant le do-while...
apparament max ne change pas de valeur et menu vaut 1 par défaut donc bon...
Et je viens de regarder pour long j'ai bien %li
Et je viens de regarder pour long j'ai bien %li
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ca sert a dire que la boucle se répète jusqu'à ce que le nombre entré sois 1 ou 2 ou 3 ou 4
alors c'est menu pas numéro ;)
Tu rajoute juste un while autour du scanf de menu
par exemple
menu=0 pour entrer dans le while
while(numero!=1 et de 2 et de 3){scanf(... menu)}
sinon en modifiant ton while de la fin ça marche :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
long MAX= 100, MIN = 1;
long numero= 123;
long nombreMystere= 0;
long menu= 0;
srand(time(NULL));
printf("commencer la partie \n");
printf("choisissez votre niveau de difficulté:\n");
printf("1. Facile(de 1 à 100\n");
printf("2. Medium ( de 1 à 500)\n");
printf("3.Difficile ( de 1 à 1000)\n");
printf("4.EXTREME!!!!(de 1 à 10 000)\n");
scanf("%ld", &menu);
switch (menu)
{
case 1:
printf("Vous avez choisis de 1 a 100\n");
MAX=100;
break;
case 2:
printf("Vous avec choisis de 1 a 500 .Pas pire...\n");
MAX=500;
break;
case 3:
printf("Vous avez choisis de 1 a 1000.Wow...Bonne chance!\n");
MAX=1000;
break;
case 4:
printf("Vous avez choisis de 1 à 10000.Si vous réussissez...Vous êtes un dieu!!!\n");
MAX=10000;
break;
}
nombreMystere= (rand() % (MAX - MIN + 1)) + MIN;
numero=0; // vu que nombre mystere différent de 0, on peut rentrer dans le while avec numero=0
while (numero!=nombreMystere){
printf("Entre un chiffre entre 1 et %ld : " , MAX);
scanf("%ld" , &numero);
if (numero>nombreMystere)
printf("Plus bas! \n");
else if (numero==nombreMystere)
printf("JACKPOT!!!! T'as gagne 300 000 000$\n");
else if(numero<nombreMystere)
printf("Plus Haut\n");
else
printf("Un NOMBRE!!! NOMBRE!!!!!!!\n"); // sert à rien de toute façon si ce n'est pas un nombre ça fera un bug ;) je sais plus comment on l'éviter
}
system("PAUSE");
return 0;
}
Tu rajoute juste un while autour du scanf de menu
par exemple
menu=0 pour entrer dans le while
while(numero!=1 et de 2 et de 3){scanf(... menu)}
sinon en modifiant ton while de la fin ça marche :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
long MAX= 100, MIN = 1;
long numero= 123;
long nombreMystere= 0;
long menu= 0;
srand(time(NULL));
printf("commencer la partie \n");
printf("choisissez votre niveau de difficulté:\n");
printf("1. Facile(de 1 à 100\n");
printf("2. Medium ( de 1 à 500)\n");
printf("3.Difficile ( de 1 à 1000)\n");
printf("4.EXTREME!!!!(de 1 à 10 000)\n");
scanf("%ld", &menu);
switch (menu)
{
case 1:
printf("Vous avez choisis de 1 a 100\n");
MAX=100;
break;
case 2:
printf("Vous avec choisis de 1 a 500 .Pas pire...\n");
MAX=500;
break;
case 3:
printf("Vous avez choisis de 1 a 1000.Wow...Bonne chance!\n");
MAX=1000;
break;
case 4:
printf("Vous avez choisis de 1 à 10000.Si vous réussissez...Vous êtes un dieu!!!\n");
MAX=10000;
break;
}
nombreMystere= (rand() % (MAX - MIN + 1)) + MIN;
numero=0; // vu que nombre mystere différent de 0, on peut rentrer dans le while avec numero=0
while (numero!=nombreMystere){
printf("Entre un chiffre entre 1 et %ld : " , MAX);
scanf("%ld" , &numero);
if (numero>nombreMystere)
printf("Plus bas! \n");
else if (numero==nombreMystere)
printf("JACKPOT!!!! T'as gagne 300 000 000$\n");
else if(numero<nombreMystere)
printf("Plus Haut\n");
else
printf("Un NOMBRE!!! NOMBRE!!!!!!!\n"); // sert à rien de toute façon si ce n'est pas un nombre ça fera un bug ;) je sais plus comment on l'éviter
}
system("PAUSE");
return 0;
}
Tu as essayée de mettre un printf de max avant le while ? je vois pas d'erreur avant
scanf("%li", &menu)
2-Sa mène à quoi tout ça... il est juste avant le do-while pour que sa valeure change avant le do-while...
Merci