Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probléme avec tuto 8

    24 décembre 2005 à 19:25:16

    Bonjour
    J'ai fait un proggrame avec le dernier tutorial de M@teo21 le seul probléme c'est quand je compile:
    ça me met une erreur à la ligne 66
    (scanf("%ld", &choix);)
    Voilà le code :
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main(int argc, char *argv[])
    {
        long partie = 1, nombreJoueur,nombreMystere = 0 , choix = 0 , nombreEssais = 0;
        while (partie ==1)
        {
              printf ("-.-# Menu #-.-\n\n\n");
              printf ("1 ou 2 joueurs?\n");
              scanf ("%ld", &nombreJoueur);
             
              /*Un joueur*/
             
              if (nombreJoueur == 1);
              {
        const long MAX = 100, MIN = 1;
        srand(time(NULL));/* choisi un nombre au hasard */
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
        do
        {
                      printf ("Entrez le nombre mystere. \n");
                      scanf("%ld", &choix);
                      if (choix < nombreMystere)
                      {
                      printf ("Plus grand. \n");
                      nombreEssais++;
                      }
                      if (choix > nombreMystere)
                      {
                      printf ("plus petit. \n");
                      nombreEssais++;
                      }
        }
        while (nombreMystere != choix);
       
        if (nombreEssais <= 5)
            printf ("Bravo vous avez trouvez le nombre mystere en %ld fois :\n vous etes un pro!!!\n\n",nombreEssais);
           
            else if (nombreEssais <=15)
            printf ("Pas mal vous avez trouvez en %ld fois\n\n",nombreEssais);
           
            else if (nombreEssais <=100)
            printf ("Houla entraine toi tu a trouve le nombre en %ld fois\n\n",nombreEssais);
            /*rejouer ? */
            printf ("Voulez vous jouer une autre partie ?(1 = oui, 0 = non)\n");
            scanf("%ld", &partie);
            while (partie > 1)
            {
            printf ("1 ou 2 ?");
            scanf("%ld", &partie);
            }
            }
            }
           
            /* deux joueurs*/
           
            if (nombreJoueur ==2);
            {
            printf ("Joueur 1 choisi le nombre mystere:\n");
            scanf("%ld", &nombreMystere);
            do
           
            printf("Quel est le nombre mystere?\n");
            scanf("%ld", &choix);
            if (nombreMystere < choix)
            {
            printf ("Plus petit\n");
            nombreEssais++;
            }
            if (nombreMystere > choix)
            {
            printf ("Plus grand\n");
            nombreEssais++;
            }
            while (nombreMystere != choix);
           if (nombreEssais <= 5)
            printf ("Bravo vous avez trouvez le nombre mystere en %ld fois :\n vous etes un pro!!!\n\n",nombreEssais);
           
            else if (nombreEssais <=15)
            printf ("Pas mal vous avez trouvez en %ld fois\n\n",nombreEssais);
           
            else if (nombreEssais <=100)
            printf ("Houla entraine toi tu a trouve le nombre en %ld fois\n\n",nombreEssais);
            /*rejouer ? */
            printf ("Voulez vous jouer une autre partie ?(1 = oui, 0 = non)\n");
            scanf("%ld", &partie);
            while (partie > 1)
            {
            printf ("1 ou 2 ?");
            scanf("%ld", &partie);
            }
        }

      return 0;
    }


    pouvez-vous m'aider ? :(
    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      24 décembre 2005 à 19:27:40

      Oubli de l'accolade ouvrante juste après le "do" ! ;)
      • Partager sur Facebook
      • Partager sur Twitter
        24 décembre 2005 à 20:30:14

        Merci beaucoup. Je commençais à désésperer ^^

        Mais je viens de réaliser que seul la fonction à 1 joueur marche(quand je met 2 au début ça fait comme si j'avais mis 1. Peut-tu m'expliquer pourquoi ?
        • Partager sur Facebook
        • Partager sur Twitter
          25 décembre 2005 à 8:49:21

          Je pense que tu devrais mettre
          else if (nombreJoueur ==2)

          Au lieu de
          if (nombreJoueur ==2)

          Mais je ne suis que débutant, dnc c'est pas sur... :p
          • Partager sur Facebook
          • Partager sur Twitter
            25 décembre 2005 à 9:42:50

            printf ("1 ou 2 ?");
                    scanf("%ld", &partie);
                    }
                    }
                    }

            Ya une accolade de trop... A l'avenir, pour éviter les problèmes d'accolades, insère les 2 par 2 dès le début, puis écris à l'intérieur.
            • Partager sur Facebook
            • Partager sur Twitter
              25 décembre 2005 à 10:43:49

              Oui mais aprés ça me remet le même probléme qu'avant (c'est à dire que le compilateur me trouve une erreur)
              devilgui non ça ne marche pas quand je le met ça me met une erreur, merci quand même.
              • Partager sur Facebook
              • Partager sur Twitter
                25 décembre 2005 à 11:00:18

                alors la sa marche. si je te disais le nombre d'accolade oublié....sa dépasse les 15 en tout cas lol

                bon ton code qui marche :
                #include <stdio.h>
                #include <stdlib.h>
                #include <time.h>

                int main(int argc, char *argv[])
                {
                    long partie = 1, nombreJoueur,nombreMystere = 0 , choix = 0 , nombreEssais = 0;
                    while (partie ==1)
                    {
                          printf ("-.-# Menu #-.-\n\n\n");
                          printf ("1 ou 2 joueurs?\n");
                          scanf ("%ld", &nombreJoueur);
                         
                          /*Un joueur*/
                         
                          if (nombreJoueur == 1);
                          {
                    const long MAX = 100, MIN = 1;
                    srand(time(NULL));/* choisi un nombre au hasard */
                    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                    do
                    {//accolade oublié
                                  printf ("Entrez le nombre mystere. \n");
                                  scanf("%ld", &choix);
                                  if (choix < nombreMystere)
                                  {//accolade oublié
                                  printf ("Plus grand. \n");
                                  nombreEssais++;
                                  }//accolade oublié
                                  if (choix > nombreMystere)
                                  {//accolade oublié
                                  printf ("plus petit. \n");
                                  nombreEssais++;
                                  }//accolade oublié
                    }
                    while (nombreMystere != choix);
                   
                    if (nombreEssais <= 5)
                        {//accolade oublié
                        printf ("Bravo vous avez trouvez le nombre mystere en %ld fois :\n vous etes un pro!!!\n\n",nombreEssais);
                        }//accolade oublié
                        else if (nombreEssais <=15)
                        {//accolade oublié
                        printf ("Pas mal vous avez trouvez en %ld fois\n\n",nombreEssais);
                       } //accolade oublié
                       else if (nombreEssais <=100)
                       {//accolade oublié
                        printf ("Houla entraine toi tu a trouve le nombre en %ld fois\n\n",nombreEssais);
                        /*rejouer ? */
                        printf ("Voulez vous jouer une autre partie ?(1 = oui, 0 = non)\n");
                        scanf("%ld", &partie);
                        }//accolade oublié
                        while (partie > 1)
                        {
                        printf ("1 ou 2 ?");
                        scanf("%ld", &partie);
                        }
                        }//accolade oublié
                       
                       
                       
                        /* deux joueurs*/
                       
                        if (nombreJoueur ==2);
                        {
                        printf ("Joueur 1 choisi le nombre mystere:\n");
                        scanf("%ld", &nombreMystere);
                        }//accolade oublié
                        do
                       {
                        printf("Quel est le nombre mystere?\n");
                        scanf("%d", &choix);
                        if (nombreMystere < choix)
                        {//accolade oublié
                        printf ("Plus petit\n");
                        nombreEssais++;
                        }//accolade oublié
                        if (nombreMystere > choix)
                        {//accolade oublié
                        printf ("Plus grand\n");
                        nombreEssais++;
                        }//accolade oublié
                        }while (nombreMystere != choix);
                       if (nombreEssais <= 5)
                       {//accolade oublié
                        printf ("Bravo vous avez trouvez le nombre mystere en %ld fois :\n vous etes un pro!!!\n\n",nombreEssais);
                        }//accolade oublié
                        else if (nombreEssais <=15)
                        {//accolade oublié
                        printf ("Pas mal vous avez trouvez en %ld fois\n\n",nombreEssais);
                        }//accolade oublié
                        else if (nombreEssais <=100)
                        {//accolade oublié
                        printf ("Houla entraine toi tu a trouve le nombre en %ld fois\n\n",nombreEssais);
                        /*rejouer ? */
                        printf ("Voulez vous jouer une autre partie ?(1 = oui, 0 = non)\n");
                        scanf("%ld", &partie);
                        }
                        while (partie > 1)
                        {
                        printf ("1 ou 2 ?");
                        scanf("%ld", &partie);
                        }
                    }//fin de while
                // et la prochaine fois n'oublie pas toutes les accolades...:P
                  return 0;
                }
                • Partager sur Facebook
                • Partager sur Twitter
                  25 décembre 2005 à 11:17:01

                  Et surtout, indente correctement, là c'est difficile à lire et ca pose plein d'erreurs.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 décembre 2005 à 21:35:29

                    Sauf qu'on revient au fait que quand je demande 2 joueurs ça me met 1 joueur.

                    Edit:
                    ça y est, j'ai reussi, il y avait seulement un ; en trop (ligne 16).
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Probléme avec tuto 8

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown