Partage
  • Partager sur Facebook
  • Partager sur Twitter

J'trouve pas l'erreur de mon code

mon code : le TP "Faire un pendu" du cours sur le C

Sujet résolu
    20 janvier 2007 à 16:12:29

    Salut a tous !!
    Je suis programmeur débutant (très très débutant même !) et je suis en train de lire les cours sur le C/C++. C'est vrai que ça fait un sacré bout de temps que j'ai commencé a lire le tuto, mais qui va lentement va sûrement ;) !
    Bon là j'en suis au TP sur le Pendu (après avoir relu 3 fois la deuxième partie :p ) et j'arrive toujours pas à le faire marcher :( .
    Pour ceux qui n'ont jamais lu les cours ou qui auraient oublié, il faut faire d'abord un code tout simple avec comme mot secret "MARRON", un mot qui change jamais (Ouais, j'sais, c'est pas très marrant mais c'est Matéo qu'a dit ça alors faut le faire, et au trot ! ^^ ) Donc voilà, mon tout petit code tout simple plante et je suis tellement nul en anglais que j'comprend même pas le message du débugger. Voilà mon code :

    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>

    long rechercheLettre(char mot[], long lettreEnCours, char tableau[]);
    char lireCaractere();

    int main(int argc, char *argv[])
    {
      long i = 0, continuer = 1, vies = 0, gagne = 0, bonneLettre = 0, retour = 0, choix = 0;
      char mot[] = "MARRON", lettres[6] = {0}, maLettre = 0;
     
      printf("*** Bienvenue dans le jeu du pendu ! *** \n\n\n");
      printf("Vous avez dix vies au début du jeu.");
      printf(" A chaque tour, vous devez proposer une lettre et si celle ci est contenue");
      printf(" dans le mot secret, elle s'affichera. Sinon, vous perdez une vie. ");
      printf("Le but est bien sur de trouver le mot secret.\n\n");
      printf("Vous êtes prets ? Alors c'est partiiiii !\n\n");
      while(continuer = 1)
      {
           
           printf("------------------\n\n");
           vies = 10;
           lettres[0] = 0;
           lettres[1] = 0;
           lettres[2] = 0;
           lettres[3] = 0;
           lettres[4] = 0;
           lettres[4] = 0;
           lettres[5] = 0;
           
           while(vies =! 0 && gagne == 0)
           {
                     
           printf("Il vous reste %ld vies\n", vies);     
           printf("Le mot secret est : ");
           while(i < 6)
           {
                   if(lettres[i] == 1)
                   printf("%c", mot[i]);
                   else
                   printf("-");
           }
     
           printf("Proposez une lettre : ");
           maLettre = lireCarractere();
           printf("\n-----\n\n");
           
           retour = rechercheLettre(mot, maLettre, lettres);
           if(retour == 0)
           {
           vies--;
           }
           if(lettres[0] == 1 && lettres[1] == 1 && lettres[2] == 1 && lettres[3] == 1 && lettres[4] == 1 && lettres[5] == 1)
           gagne = 1;
           else
           gagne = 0;   
       }

       if (gagne == 1)
       printf("Vous avez gagne !\n\n");
       else
       printf("Vous avez perdu !\n\n");
       
       
       printf("Voulez vous rejouer ?\n1 - Oui\n2 - Non\n");
       scanf("%ld", choix);
       if (choix == 1) ;
       else if (choix == 0)
       continuer = 0;

      }
      system("PAUSE");     
      return 0;
    }


    // Les fonctions

    char lireCaractere()
    {
        char caractere = 0;

        caractere = getchar();
        caractere = toupper(caractere);

     
        while (getchar() != '\n') ;

        return caractere;
    }


    long rechercheLettre(char mot[], long lettreEnCours, char tableau[])
    {
       long i = 0, renvoyer = 0;
       for (i = 0 ; mot[i] != '\0' ; i++)
       {
          if(lettreEnCours == mot[i])
          {
          renvoyer = 1;
          tableau[i] = 1;
          }
       }
       return renvoyer;
    }


    J'espère (je suis sur, même) que vous trouverez l'erreur rapidement ! Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      20 janvier 2007 à 16:13:54

      Citation : Monsterman

      j'comprend même pas le message du débugger


      ...
      • Partager sur Facebook
      • Partager sur Twitter
        20 janvier 2007 à 16:17:41

        Avec Dev C++ (je sais j'devrais prendre code::blocks) en bas dans la petite fenêtre un message me dit :
        " [linker error] Undefined reference to 'lireCarractere' "
        • Partager sur Facebook
        • Partager sur Twitter
          21 janvier 2007 à 19:05:53

          UP ! Personne n'a trouvé l'erreur ?
          • Partager sur Facebook
          • Partager sur Twitter
            21 janvier 2007 à 19:16:56

            j'ai trouvé ;)

            type="cpp">printf("Proposez une lettre : ");
                   maLettre = lireCarractere();


            ta fonction s'appelle lireCaractere() et pas lireCarractere()
            le "r" en trop ;)
            • Partager sur Facebook
            • Partager sur Twitter
              21 janvier 2007 à 19:20:08

              Citation : Monsterman

              Avec Dev C++ (je sais j'devrais prendre code::blocks) en bas dans la petite fenêtre un message me dit :
              " [linker error] Undefined reference to 'lireCarractere' "



              Faut acheter des lunettes ^^
              • Partager sur Facebook
              • Partager sur Twitter
              Mettre à jour le MinGW Gcc sur Code::Blocks. Du code qui n'existe pas ne contient pas de bug
                22 janvier 2007 à 20:32:23

                Une toute petite erreur qui met le programme faux...c'est dingue ^^ :o
                • Partager sur Facebook
                • Partager sur Twitter
                  23 janvier 2007 à 2:38:15

                  Citation : Amane

                  Une toute petite erreur qui met le programme faux...c'est dingue ^^ :o


                  Ca n'a rien d'étonnant. Tu ne voudrais pas que le linker accepte un nom inconnu ? L'informatique, c'est l'école de la rigueur. Il va falloir s'y habituer.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Music only !
                    23 janvier 2007 à 6:47:39

                    while(i < 6)
                           {
                                   if(lettres[i] == 1)
                                   printf("%c", mot[i]);
                                   else
                                   printf("-");
                           }


                    Cela ne risque pas de marcher non plus (enfin le compilateur dira rien :p ), mais tu oublies d'incrémenter i à chaque tour de boucler ==> boucle infinie.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      23 janvier 2007 à 10:04:27

                      Pourquoi tu initialises 2 fois lettre[4] ??

                      De plus, le signe différent de est != et non =!. ;)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        23 janvier 2007 à 21:16:22

                        Okay, merci beaucoup à tous ! Mon problème est résolu !
                        • Partager sur Facebook
                        • Partager sur Twitter

                        J'trouve pas l'erreur de mon code

                        × 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