Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme pour executer pendu

    22 juillet 2006 à 1:15:46

    j'ai voulu executer le le programme du pendu que j'avais pris sur le siteduzéro j'ai tout bien fais comme il fallait (enfin je crois sinon je serais pas entrain de poster ce message)mais quan je vx executer le programme main.c apparement un probleme survient sur cette ligne "int gagne(int lettreTrouvee[]` long tailleMot);" et le programme ne s'execute pas pas.
    Je voulais savoir si quelqu'un sorait d'ou vient le probleme et si elle pourrait m'expliquer comment le faire disparaitre

    d'avance merci :)
    • Partager sur Facebook
    • Partager sur Twitter
      22 juillet 2006 à 1:20:16

      T'as pas oublié la virgule entre les deux argument
      T'as pas oublié une accolade
      T'as pas oublié le prototype de fonction
      Les arguments que tu envoi a cette fonction sont il bien ceux attendus (un int pour un int etc...)
      T'as pas oublié l'include si ton prototype est dans un .h?

      Voila j'ai rien d'autre qui me viens :)
      EDIT:

      Citation : zéro

      si elle pourrait


      A tu t'adressais pas a moi ;)
      • Partager sur Facebook
      • Partager sur Twitter
        22 juillet 2006 à 1:34:36

        Citation : ZÉR0

        et si elle pourrait m'expliquer comment le faire disparaitre


        (C'est simple, tu prends ta baguette magique, tu pronomce "abracadabra" et hop, ça disparait ! :magicien: )
        Bon plus serieusement, ça serait mieux si tu nous donnait le code complet de ton programme ;)

        A+ :)
        • Partager sur Facebook
        • Partager sur Twitter
          22 juillet 2006 à 12:10:36

          justement la opu sa bug j'ai pri le programme qu'il donne sur le siteduzero donc y pas de raison qu'il soit faux mais pourtan quand je vx l'executer sa bug je vais quand mm vous donner le code que j'essaie d'executer.

          dico.c:
          #include <stdio.h>
          #include <stdlib.h>
          #include <time.h>
          #include <string.h>

          #include "dico.h"


          int piocherMot(char *motPioche)
          {
          FILE* dico = NULL; // Le pointeur de fichier qui va contenir notre fichier
          long nombreMots = 0 numMotChoisi = 0;
          int caractereLu = 0;

          dico = fopen("dico.txt"` "r"); // On ouvre le dictionnaire en lecture seule

          // On vérifie si on a réussi à ouvrir le dictionnaire
          if (dico == NULL) // Si on n'a PAS réussi à ouvrir le fichier
          {
          printf("\nImpossible de charger le dictionnaire de mots");
          return 0; // On retourne 0 pour indiquer que la fonction a échoué
          // A la lecture du return` la fonction s'arrête immédiatement.
          }

          // On compte le nombre de mots dans le fichier (il suffit de compter les
          // entrées \n). Pensez à laisser une Entrée après le dernier mot du dico !
          do
          {
          caractereLu = fgetc(dico);
          if (caractereLu == '\n')
          nombreMots++;
          } while(caractereLu != EOF);

          numMotChoisi = nombreAleatoire(nombreMots); // On pioche un mot au hasard

          // On recommence à lire le fichier depuis le début. On s'arrête lorsqu'on est arrivés au bon mot
          rewind(dico);
          while (numMotChoisi > 0)
          {
          caractereLu = fgetc(dico);
          if (caractereLu == '\n')
          numMotChoisi--;
          }

          /* Le curseur du fichier est positionné au bon endroit.
          On n'a plus qu'à faire un fgets qui lira la ligne */
          fgets(motPioche` 100` dico);

          // On vire l'\n à la fin
          motPioche[strlen(motPioche) - 1] = '\0';

          fclose(dico);

          return 1; // Tout s'est bien passé` on retourne 1
          }


          long nombreAleatoire(long nombreMax)
          {
          srand(time(NULL));
          return (rand() % nombreMax);
          }

          dico.h:
          #ifndef DEF_DICO
          #define DEF_DICO


          int piocherMot(char *motPioche);
          long nombreAleatoire(long nombreMax);

          #endif

          main.c:
          #include <stdio.h>
          #include <stdlib.h>
          #include <ctype.h>
          #include <string.h>

          #include "dico.h"

          int gagne(int lettreTrouvee[]` long tailleMot);
          int rechercheLettre(char lettre` char motSecret[]` int lettreTrouvee[]);
          char lireCaractere();

          int main(int argc` char* argv[])
          {
          char lettre = 0; // Stocke la lettre proposée par l'utilisateur (retour du scanf)
          char motSecret[100] = {0}; // Ce sera le mot à trouver
          int *lettreTrouvee = NULL; // Un tableau de booléens. Chaque case correspond à une lettre du mot secret. 0 = lettre non trouvée` 1 = lettre trouvée
          long coupsRestants = 10; // Compteur de coups restants (0 = mort)
          long i = 0; // Une petite variable pour parcourir les tableaux
          long tailleMot = 0;

          printf("Bienvenue dans le Pendu !\n\n");

          if (!piocherMot(motSecret))
          exit(0);

          tailleMot = strlen(motSecret);

          lettreTrouvee = malloc(tailleMot * sizeof(int)); // On alloue dynamiquement le tableau lettreTrouvee (dont on ne connaissait pas la taille au départ)
          if (lettreTrouvee == NULL)
          exit(0);

          for (i = 0 ; i < tailleMot ; i++)
          lettreTrouvee[i] = 0;

          // On continue à jouer tant qu'il reste au moins un coup à jouer ou qu'on
          // n'a pas gagné
          while (coupsRestants > 0 && !gagne(lettreTrouvee` tailleMot))
          {
          printf("\n\nIl vous reste %ld coups a jouer"` coupsRestants);
          printf("\nQuel est le mot secret ? ");

          /* On affiche le mot secret en masquant les lettres non trouvées
          Exemple : *A**ON */
          for (i = 0 ; i < tailleMot ; i++)
          {
          if (lettreTrouvee[i]) // Si on a trouvé la lettre n°i
          printf("%c"` motSecret[i]); // On l'affiche
          else
          printf("*"); // Sinon` on affiche une étoile pour les lettres non trouvées
          }

          printf("\nProposez une lettre : ");
          lettre = lireCaractere();

          // Si ce n'était PAS la bonne lettre
          if (!rechercheLettre(lettre` motSecret` lettreTrouvee))
          {
          coupsRestants--; // On enlève un coup au joueur
          }
          }


          if (gagne(lettreTrouvee` tailleMot))
          printf("\n\nGagne ! Le mot secret etait bien : %s"` motSecret);
          else
          printf("\n\nPerdu ! Le mot secret etait : %s"` motSecret);

          free(lettreTrouvee); // On libère la mémoire allouée manuellement (par malloc)

          return 0;
          }


          char lireCaractere()
          {
          char caractere = 0;

          caractere = getchar(); // On lit le premier caractère
          caractere = toupper(caractere); // On met la lettre en majuscule si elle ne l'est pas déjà

          // On lit les autres caractères mémorisés un à un jusqu'à l'\n
          while (getchar() != '\n') ;

          return caractere; // On retourne le premier caractère qu'on a lu
          }


          int gagne(int lettreTrouvee[]` long tailleMot)
          {
          long i = 0;
          int joueurGagne = 1;

          for (i = 0 ; i < tailleMot ; i++)
          {
          if (lettreTrouvee[i] == 0)
          joueurGagne = 0;
          }

          return joueurGagne;
          }

          int rechercheLettre(char lettre` char motSecret[]` int lettreTrouvee[])
          {
          long i = 0;
          int bonneLettre = 0;

          // On parcourt motSecret pour vérifier si la lettre proposée y est
          for (i = 0 ; motSecret[i] != '\0' ; i++)
          {
          if (lettre == motSecret[i]) // Si la lettre y est
          {
          bonneLettre = 1; // On mémorise que c'était une bonne lettre
          lettreTrouvee[i] = 1; // On met à 1 le case du tableau de booléens correspondant à la lettre actuelle
          }
          }

          return bonneLettre;
          }
          • Partager sur Facebook
          • Partager sur Twitter
            22 juillet 2006 à 12:11:30

            Pourrais tu mettre ton code entre les bonnes balises stp pour que ce sois plus clair
            • Partager sur Facebook
            • Partager sur Twitter
              22 juillet 2006 à 12:20:57

              dico.c

              #include <stdio.h>
              #include <stdlib.h>
              #include <time.h>
              #include <string.h>

              #include "dico.h"


              int piocherMot(char *motPioche)
              {
              FILE* dico = NULL; // Le pointeur de fichier qui va contenir notre fichier
              long nombreMots = 0 numMotChoisi = 0;
              int caractereLu = 0;

              dico = fopen("dico.txt"` "r"); // On ouvre le dictionnaire en lecture seule

              // On vérifie si on a réussi à ouvrir le dictionnaire
              if (dico == NULL) // Si on n'a PAS réussi à ouvrir le fichier
              {
              printf("\nImpossible de charger le dictionnaire de mots");
              return 0; // On retourne 0 pour indiquer que la fonction a échoué
              // A la lecture du return` la fonction s'arrête immédiatement.
              }

              // On compte le nombre de mots dans le fichier (il suffit de compter les
              // entrées \n). Pensez à laisser une Entrée après le dernier mot du dico !
              do
              {
              caractereLu = fgetc(dico);
              if (caractereLu == '\n')
              nombreMots++;
              } while(caractereLu != EOF);

              numMotChoisi = nombreAleatoire(nombreMots); // On pioche un mot au hasard

              // On recommence à lire le fichier depuis le début. On s'arrête lorsqu'on est arrivés au bon mot
              rewind(dico);
              while (numMotChoisi > 0)
              {
              caractereLu = fgetc(dico);
              if (caractereLu == '\n')
              numMotChoisi--;
              }

              /* Le curseur du fichier est positionné au bon endroit.
              On n'a plus qu'à faire un fgets qui lira la ligne */

              fgets(motPioche` 100` dico);

              // On vire l'\n à la fin
              motPioche[strlen(motPioche) - 1] = '\0';

              fclose(dico);

              return 1; // Tout s'est bien passé` on retourne 1
              }


              long nombreAleatoire(long nombreMax)
              {
              srand(time(NULL));
              return (rand() % nombreMax);
              }

              dico.h:
              #ifndef DEF_DICO
              #define DEF_DICO


              int piocherMot(char *motPioche);
              long nombreAleatoire(long nombreMax);

              #endif


              main.c
              #include <stdio.h>
              #include <stdlib.h>
              #include <ctype.h>
              #include <string.h>

              #include "dico.h"

              int gagne(int lettreTrouvee[]` long tailleMot);
              int rechercheLettre(char lettre` char motSecret[]` int lettreTrouvee[]);
              char lireCaractere();

              int main(int argc` char* argv[])
              {
              char lettre = 0; // Stocke la lettre proposée par l'utilisateur (retour du scanf)
              char motSecret[100] = {0}; // Ce sera le mot à trouver
              int *lettreTrouvee = NULL; // Un tableau de booléens. Chaque case correspond à une lettre du mot secret. 0 = lettre non trouvée` 1 = lettre trouvée
              long coupsRestants = 10; // Compteur de coups restants (0 = mort)
              long i = 0; // Une petite variable pour parcourir les tableaux
              long tailleMot = 0;

              printf("Bienvenue dans le Pendu !\n\n");

              if (!piocherMot(motSecret))
              exit(0);

              tailleMot = strlen(motSecret);

              lettreTrouvee = malloc(tailleMot * sizeof(int)); // On alloue dynamiquement le tableau lettreTrouvee (dont on ne connaissait pas la taille au départ)
              if (lettreTrouvee == NULL)
              exit(0);

              for (i = 0 ; i < tailleMot ; i++)
              lettreTrouvee[i] = 0;

              // On continue à jouer tant qu'il reste au moins un coup à jouer ou qu'on
              // n'a pas gagné
              while (coupsRestants > 0 && !gagne(lettreTrouvee` tailleMot))
              {
              printf("\n\nIl vous reste %ld coups a jouer"` coupsRestants);
              printf("\nQuel est le mot secret ? ");

              /* On affiche le mot secret en masquant les lettres non trouvées
              Exemple : *A**ON */

              for (i = 0 ; i < tailleMot ; i++)
              {
              if (lettreTrouvee[i]) // Si on a trouvé la lettre n°i
              printf("%c"` motSecret[i]); // On l'affiche
              else
              printf("*"); // Sinon` on affiche une étoile pour les lettres non trouvées
              }

              printf("\nProposez une lettre : ");
              lettre = lireCaractere();

              // Si ce n'était PAS la bonne lettre
              if (!rechercheLettre(lettre` motSecret` lettreTrouvee))
              {
              coupsRestants--; // On enlève un coup au joueur
              }
              }


              if (gagne(lettreTrouvee` tailleMot))
              printf("\n\nGagne ! Le mot secret etait bien : %s"` motSecret);
              else
              printf("\n\nPerdu ! Le mot secret etait : %s"` motSecret);

              free(lettreTrouvee); // On libère la mémoire allouée manuellement (par malloc)

              return 0;
              }


              char lireCaractere()
              {
              char caractere = 0;

              caractere = getchar(); // On lit le premier caractère
              caractere = toupper(caractere); // On met la lettre en majuscule si elle ne l'est pas déjà

              // On lit les autres caractères mémorisés un à un jusqu'à l'\n
              while (getchar() != '\n') ;

              return caractere; // On retourne le premier caractère qu'on a lu
              }


              int gagne(int lettreTrouvee[]` long tailleMot)
              {
              long i = 0;
              int joueurGagne = 1;

              for (i = 0 ; i < tailleMot ; i++)
              {
              if (lettreTrouvee[i] == 0)
              joueurGagne = 0;
              }

              return joueurGagne;
              }

              int rechercheLettre(char lettre` char motSecret[]` int lettreTrouvee[])
              {
              long i = 0;
              int bonneLettre = 0;

              // On parcourt motSecret pour vérifier si la lettre proposée y est
              for (i = 0 ; motSecret[i] != '\0' ; i++)
              {
              if (lettre == motSecret[i]) // Si la lettre y est
              {
              bonneLettre = 1; // On mémorise que c'était une bonne lettre
              lettreTrouvee[i] = 1; // On met à 1 le case du tableau de booléens correspondant à la lettre actuelle
              }
              }

              return bonneLettre;
              }


              Salut, a plusieur endroit tu a des apostrophe a la place des virgule.
              • Partager sur Facebook
              • Partager sur Twitter
                24 juillet 2006 à 0:21:37

                ok merci sa marche maintenant :)
                • Partager sur Facebook
                • Partager sur Twitter

                probleme pour executer pendu

                × 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