C : Mon programme ne fonctionnes pas

Résolu
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
Configuration: Windows XP
Internet Explorer 7.0
Dev-C++

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,
    C'est quoi le format long ? dans "long numero= 123;"
    pourquoi pas int ?
    1. 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!
    2. @Wazza6ah 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
    3. @Jean_38Le 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
    4. @Jean_381-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. ::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...
    1. 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
      1. ah oups... c'est ld qu'il faut écrire
    2. Bon ... le menu fonctionne ... mais le programme ne me demande toujours pas le chiffre
      1. le while je l'écrirais plutot
        while(cond){
        instruction 1, 2 ... ;
        }
        Du moins je connais pas le do while à part sur calculatrice
    3. non la compilation plante a cause de ca...Mais ... juste pour être sur... "Pas égal à" c'est "!=" ?
      1. en faite à quioi sert le while (numero!=1||...)
        au pire c'est le cas 5 qui sera selectionné (le dernier)
    4. 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
      1. 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;

        }
    5. YAYY merci!!!!!!!
      1. euh une derniere chose... comment on met une icone a mon .exe??