Partage
  • Partager sur Facebook
  • Partager sur Twitter

TP du pendu

Pour avoir vos avis éclairés

Sujet résolu
    8 mai 2006 à 14:29:14

    Salut tout le monde,
    comme il est conseillé dans les cours, je propose ce que j'ai codé pour le TP du pendu, pour avoir vos critiques,
    merci d'avance.
    (j'ai tout mis dans un seul fichier tellement je suis balaise en programmation modulaire :D )
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <string.h>
    #include <time.h>
    #define TAILLE_MAX 100

    long genereNombre(long MAX, long MIN);

    char lireCaractere();

    int main(int argc, char* argv[])
    {
        long nombre = 0, i=0;
        long MAX = 0, MIN = 0;
        long nombreAleatoire = 0 ;
        FILE *fichier =  NULL;
        char motSecret[TAILLE_MAX] = "";
        fichier = fopen("liste.txt", "r");
            if(fichier != NULL)
            {
                while( fgets(motSecret, TAILLE_MAX, fichier) != NULL)
                {
                nombre ++;        // on compte le nombre de mots
                }                 // dans le fichier(le dico)
                MAX = nombre;
                MIN = 1;
                nombreAleatoire = genereNombre(MAX, MIN);
                rewind(fichier);
                for(i=0; i<nombreAleatoire; i++)  // on liste jusqu'à nombreAleatoire
                {
                fgets(motSecret, TAILLE_MAX, fichier); //on lit le dernier mot de la liste
                }
                fclose(fichier);
            }

        printf("BIENVENU AU JEU DU PENDU\n\n");
        long coup = 10;
        char lettre = 0;
        long tailleSecret = 0;
        tailleSecret = strlen(motSecret);
        for(i=0; i< tailleSecret; i++)
        {
            if(motSecret[i] == '\n')  // on transforme le retour à la ligne
            {                         // en fin de chaine.
                motSecret[i] = '\0'// ->ça, j'aurais jamais trouvé tout seul !
            }
        }
        char motCache[100]= {0};
        for(i=0; i<tailleSecret-1; i++)
        {
            motCache[i] = '*';
        }
        while(strcmp(motCache, motSecret) != 0 && coup>0)
        {
                long compt = 0;
                printf("Il vous reste %ld coups a jouer \n", coup);
                printf("mot secret : %s\n", motCache);
                printf("Proposez une lettre : ");
                lettre = lireCaractere();
                   for(i=0; i<tailleSecret; i++)
                    {
                      if(motSecret[i] != lettre)
                      {
                         motCache[i] = motCache[i];
                      }
                     else
                      {
                         motCache[i] = lettre;
                         compt++;
                      }
                    }
                 if(compt == 0)
                 {
                  coup--;
                 }
        }
        if(coup>0)
        {
            printf("\n Bravo, vous avez gagne ! le mot etait bien %s\n", motCache);
        }
        else
        {
            printf("\n Perduuu !!! le mot cache etait %s\n", motSecret);
        }

        return 0;
    }

    long genereNombre(long MAX, long MIN)
    {
        long nbre = 0;
        srand(time(NULL));
        nbre = (rand()%(MAX - MIN + 1)) +MIN;
        return nbre;
    }

    char lireCaractere()
    {
        char caractere = 0;
        caractere = getchar();
        caractere = toupper(caractere);
        while (getchar() != '\n');
        return caractere;
    }

    remerci
    ++
    ratdecav
    • Partager sur Facebook
    • Partager sur Twitter
      8 mai 2006 à 14:46:05

      Ben disons que c'est facil de gagner, j'ouvre le prog et j'ai déjà gagné, y a un probleme...
      • Partager sur Facebook
      • Partager sur Twitter
        8 mai 2006 à 14:49:43

        Oui, mais il faut mettre un fichier : liste.txt avec des mots à trouver.
        • Partager sur Facebook
        • Partager sur Twitter
          8 mai 2006 à 15:13:18

          Citation : ratdecav

          Oui, mais il faut mettre un fichier : liste.txt avec des mots à trouver.


          Alors ca devrait être signalé, parce que ça ...

          BIENVENU AU JEU DU PENDU


          Bravo, vous avez gagne ! le mot etait bien

          Press ENTER to continue.

          ... c'est pas très explicite... OK, j'ai créé un liste.txt :
          cheval
          grenouille
          epervier
          limace

          C'est pas très concluant non plus...

          BIENVENU AU JEU DU PENDU

          Il vous reste 10 coups a jouer
          mot secret : **********
          Proposez une lettre : e
          Il vous reste 9 coups a jouer
          mot secret : **********
          Proposez une lettre : n
          Il vous reste 8 coups a jouer
          mot secret : **********
          Proposez une lettre : l
          Il vous reste 7 coups a jouer
          mot secret : **********
          Proposez une lettre : s
          Il vous reste 6 coups a jouer
          mot secret : **********
          Proposez une lettre : p
          Il vous reste 5 coups a jouer
          mot secret : **********
          Proposez une lettre : G
          Il vous reste 4 coups a jouer
          mot secret : **********
          Proposez une lettre : E
          Il vous reste 3 coups a jouer
          mot secret : **********
          Proposez une lettre : i
          Il vous reste 2 coups a jouer
          mot secret : **********
          Proposez une lettre : l
          Il vous reste 1 coups a jouer
          mot secret : **********
          Proposez une lettre : m

          Perduuu !!! le mot cache etait grenouille

          Tu as testé ton code avant de le publier ?

          Ceci fonctionne... Pose des questions si tu ne comprends pas...

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

          static long genereNombre(long MAX, long MIN)
          {
             return (rand() % (MAX - MIN + 1)) + MIN;
          }

          static int lireCaractere(void)
          {
             int caractere = getchar();
             caractere = tolower(caractere);
             while (getchar() != '\n')
             {
             }
             return caractere;
          }

          int main(int argc, char* argv[])
          {
          #define TAILLE_MAX 100
          #define f_data "liste.txt"

             FILE *fichier = NULL;

             srand(time(NULL));

             fichier = fopen(f_data, "r");

             if (fichier != NULL)
             {
                long nombre = 0;
                long MAX = 0, MIN = 0;
                long nombreAleatoire = 0 ;
                char motSecret[TAILLE_MAX] = "";

                while ( fgets(motSecret, TAILLE_MAX, fichier) != NULL)
                {
                   nombre ++;        // on compte le nombre de mots
                }                 // dans le fichier(le dico)
                MAX = nombre;
                MIN = 1;
                nombreAleatoire = genereNombre(MAX, MIN);
                rewind(fichier);
                {
                   int i;
                   for (i = 0; i < nombreAleatoire; i++)  // on liste jusqu'à nombreAleatoire
                   {
                      fgets(motSecret, TAILLE_MAX, fichier); //on lit le dernier mot de la liste
                   }
                }
                fclose(fichier);

                printf("BIENVENU AU JEU DU PENDU\n\n");
                {
                   long const tailleSecret = strlen(motSecret);
                   {
                      int i;
                      for (i = 0; i < tailleSecret; i++)
                      {
                         if (motSecret[i] == '\n')  // on transforme le retour à la ligne
                         {                         // en fin de chaine.
                            motSecret[i] = '\0'// ->ça, j'aurais jamais trouvé tout seul !
                         }
                      }
                   }
                   {
                      long coups = 0;
                      char motCache[sizeof motSecret] =
                         {
                            0
                         };
                      {
                         int i;
                         for (i = 0; i < tailleSecret - 1; i++)
                         {
                            motCache[i] = '*';
                         }
                      }
          #define N 10

                      while (strcmp(motCache, motSecret) != 0 && coups < N)
                      {
                         printf("Il vous reste %ld coups a jouer \n", N - coups);
                         printf("mot secret : %s\n", motCache);
                         printf("Proposez une lettre : ");
                         fflush (stdout);
                         {
                            int lettre = lireCaractere();
                            int i;
                            /* -ed- -1 ... */
                            for (i = 0; i < tailleSecret - 1; i++)
                            {
                               if (motSecret[i] == lettre)
                               {
                                  motCache[i] = lettre;
                               }
                            }
                         }
                         coups++;
                      }

                      if (coups > 0)
                      {
                         printf("\n Bravo, vous avez gagne en %d coups !\n"
                                , coups);
                      }
                      else
                      {
                         printf("\n Perduuu !!! le mot cache etait %s\n", motSecret);
                      }
                   }
                }
             }
             else
             {
                printf("le fichier de donnees %s n'existe pas\n", f_data);
             }
             return 0;
          }
          • Partager sur Facebook
          • Partager sur Twitter
          Music only !
            8 mai 2006 à 15:19:52



            Citation : -ed-

            Tu as testé ton code avant de le publier ?

            Je suis surpris, parce que oui, je l'ai testé.

            je vérifie tout ça.
            Merci, de ton attention.
            ++
            • Partager sur Facebook
            • Partager sur Twitter
              8 mai 2006 à 15:44:54

              Citation : ratdecav



              Citation : -ed-

              Tu as testé ton code avant de le publier ?

              Je suis surpris, parce que oui, je l'ai testé.

              je vérifie tout ça.
              Merci, de ton attention.
              ++


              Mon fichier était en minuscules...
              • Partager sur Facebook
              • Partager sur Twitter
              Music only !
                8 mai 2006 à 15:55:05

                En tout les cas, ça m'apprendra à être plus clair.
                Merci encore, a +
                ratdecav
                • Partager sur Facebook
                • Partager sur Twitter

                TP du 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