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   -
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:
#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

Jean_38 Messages postés 235 Date d'inscription   Statut Membre Dernière intervention   20
 
Bonjour,
C'est quoi le format long ? dans "long numero= 123;"
pourquoi pas int ?
0
Wazza6 Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   40
 
j'ai appris que long et int c la meme chose mais long y a plus de chiffres mias sa change absolument rien à l'erreur!
0
Jean_38 Messages postés 235 Date d'inscription   Statut Membre Dernière intervention   20 > Wazza6 Messages postés 180 Date d'inscription   Statut Membre Dernière intervention  
 
ah oui je me souvient de cette histoire ! désolé
Tu as essayée de mettre un printf de max avant le while ? je vois pas d'erreur avant
0
Jean_38 Messages postés 235 Date d'inscription   Statut Membre Dernière intervention   20 > Jean_38 Messages postés 235 Date d'inscription   Statut Membre Dernière intervention  
 
si le c'est
scanf("%li", &menu)
0
Wazza6 Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   40 > Jean_38 Messages postés 235 Date d'inscription   Statut Membre Dernière intervention  
 
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...
0
Wazza6 Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   40 > Jean_38 Messages postés 235 Date d'inscription   Statut Membre Dernière intervention  
 
Le printf("blablabla%td" , MAX) est après le do-while qui est supposé... je dis bien supposé changer la valeure de MAX.Peut tu essayer d'être plus clair?
Merci
0
Wazza6 Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   40
 
::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...
0
Jean_38 Messages postés 235 Date d'inscription   Statut Membre Dernière intervention   20
 
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
0
Wazza6 Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   40
 
ah oups... c'est ld qu'il faut écrire
0
Jean_38 Messages postés 235 Date d'inscription   Statut Membre Dernière intervention   20 > Wazza6 Messages postés 180 Date d'inscription   Statut Membre Dernière intervention  
 
oui ld
0
Wazza6 Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   40
 
Bon ... le menu fonctionne ... mais le programme ne me demande toujours pas le chiffre
0
Jean_38 Messages postés 235 Date d'inscription   Statut Membre Dernière intervention   20
 
le while je l'écrirais plutot
while(cond){
instruction 1, 2 ... ;
}
Du moins je connais pas le do while à part sur calculatrice
0

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

Posez votre question
Wazza6 Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   40
 
ok j'essayes
0
Wazza6 Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   40
 
non la compilation plante a cause de ca...Mais ... juste pour être sur... "Pas égal à" c'est "!=" ?
0
Jean_38 Messages postés 235 Date d'inscription   Statut Membre Dernière intervention   20
 
en faite à quioi sert le while (numero!=1||...)
au pire c'est le cas 5 qui sera selectionné (le dernier)
0
Jean_38 Messages postés 235 Date d'inscription   Statut Membre Dernière intervention   20 > Jean_38 Messages postés 235 Date d'inscription   Statut Membre Dernière intervention  
 
edit
0
Wazza6 Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   40
 
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
0
Jean_38 Messages postés 235 Date d'inscription   Statut Membre Dernière intervention   20
 
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;

}
0
Wazza6 Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   40
 
YAYY merci!!!!!!!
0
Wazza6 Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   40
 
euh une derniere chose... comment on met une icone a mon .exe??
0