Partage
  • Partager sur Facebook
  • Partager sur Twitter

Jeu du programme C/C++!

    2 juillet 2006 à 22:32:29

    Bonjour les amis, voyant que vous êtes des intellegent dans les programmes "C/C++" ;) j'ai proposer un jeu simple et facile pour vous.Et le jeu c'est de trouver :o
    les fautes dans le code "C/C++", et qui trouvera toutes les fautes et les corigeraient prend la main (aprés la confirmation de la reponse) de donner lui aussi un code "C" plein de faute, et ça continue!
    Allez on commence (à moi la main maintenant):
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main(int argc, char **argv[])
    {
      long nombreCoups=0;
      long nombreMystere=0,nombreEntre=0;
      long choixMenu1 = 0, choixMenu2 = 0;
      long MAX = 100 , MIN = 1;
     
      srand (time(NULL));
      nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;


     
      printf("=========>Bonjour<=========\n");
      printf("===>********Menu********<===\n");
      printf("1-Play.\n");
      printf("2-Instructions.\n");
      scanf("%lf" , choixMenu1)
     
      switch (choixMenu1);
        {
      case 1:
           printf("Choisissez le niveau que vous voulez!\n\n");
           printf("1-Niveau 1:1==>100\n");
           printf("2-Niveau 2:1==>1000\n");
           scanf("%ld", choixMenu2);     
        break;
      case 2:
           printf("L'essentiel de ce jeu est de trouver le nombreMystere par-hasard en construisant des nombres qui sont entre les nombres de niveau que tu as choisi\n");
           printf("Bonne chance\n");
           break;
    }
     
     
     
    switch (choixMenu2);
        {
          case 1:
           MAX=100, Min=1;
           break;
          case 2:
           MAX=1000, Min=1;
           break;
        }
       
       

    do
    {
      printf("Quel est le nombre?");
      scanf ("%ld", nombreEntre);


    if (nombreMystere > nombreEntre);
      {
        printf("C'est plus!\n\n");
        nombreCoups++
      }
    else if (nombreMystere < nombreEntre);
      {
        printf("C'est moins!\n\n");
        nombreCoups++
      }

    else
      {
        printf("Bravo vous l'avez trouve en %ld coups!!!\n\n\n", nombreCoups);   
      }

    }while(nombreCoups < 10 && nombreMystere != nombreEntre);

    if(nombreCoups = 10);
    {
      printf("Vous avez perdu, le nombreMystere etait %ld!!\n\n", nombreMystere);
    }       

      system("PAUSE");   
      return 0;
    }

    Allez encourager vous et trouvez les fautes! :lol:
    • Partager sur Facebook
    • Partager sur Twitter
      2 juillet 2006 à 22:35:32

      J'espère que tu ne fait pas ça pour qu'on corrige tes codes ^^ Sinon j'édite dans quelques minutes pour ma correction :p

      Edit:
      vala ma correction:
      (J'ai commenté les erreurs corrigées :) )

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

      /*
      Identation horrible!!!
      */

      //Prototype errone: char **argv[]
      int main(int argc, char *argv[])
      {
        long nombreCoups=0;
        long nombreMystere=0,nombreEntre=0;
        long choixMenu1 = 0, choixMenu2 = 0;
        long MAX = 100 , MIN = 1;

        srand (time(NULL));
        //nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
        //Voir plus bas



        printf("=========>Bonjour<=========\n");
        printf("===>********Menu********<===\n");
        printf("1-Jouer.\n");//Tout en fr sauf ça: Play.
        printf("2-Instructions.\n");
        scanf("%ld" , &choixMenu1); //Utiliser ld pas lf.. Mettre le &

        switch (choixMenu1)//pas de ; ...
          {
        case 1:
             printf("Choisissez le niveau que vous voulez!\n\n");
             printf("1-Niveau 1:1==>100\n");
             printf("2-Niveau 2:1==>1000\n");
             scanf("%ld", &choixMenu2); //mettre un &..
             //Le nombre a déjà été vérifié...
          break;
        case 2:
             printf("L'essentiel de ce jeu est de trouver le nombreMystere par-hasard\
               en construisant des nombres qui sont entre les nombres de niveau que \
               vous avez choisi\n"
      );
             //Quelques fautes orthographiques...
             printf("Bonne chance\n");
             exit(0);//pour ne pas entrer dans le jeu après..
             break;
      }



      switch (choixMenu2)//idem que plus hauut..
          {
            case 1:
             MAX=100;
             MIN=1;//respecter la casse
             break;
            case 2:
             MAX=1000;
             MIN=1;//idem
             break;
          }


      nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
      //Ici car le nombre généré sera entre les bornes de niveau


      do
      {
        printf("Quel est le nombre?");
        scanf ("%ld", &nombreEntre);//Ne pas oublier le &


      if (nombreMystere > nombreEntre)//pas de ; pour un if
        {
          printf("C'est plus!\n\n");
          nombreCoups++;//oublié les ;
        }
      else if (nombreMystere < nombreEntre)//pas de ; dans un else if
        {
          printf("C'est moins!\n\n");
          nombreCoups++;//idem que + haut
        }

      else
        {
          printf("Bravo vous l'avez trouve en %ld coups!!!\n\n\n", nombreCoups);
          nombreCoups = 11;//Sortie bourrin de la boucle
        }

      }while(nombreCoups < 10 && nombreMystere != nombreEntre);

      if(nombreCoups == 10)//pas de ;....
      {
        printf("Vous avez perdu, le nombreMystere etait %ld!!\n\n", nombreMystere);
      }

        //system("PAUSE");
        //system("PAUSE"... que c'est vilain...
        getchar();
        return 0;
      }
      • Partager sur Facebook
      • Partager sur Twitter
        2 juillet 2006 à 22:44:42

        Ou est l'interet? Le forum C/C++ regorge de problème de ce genre à eclaircir.
        • Partager sur Facebook
        • Partager sur Twitter
          2 juillet 2006 à 22:55:06

          Moi aussi je donne un code pour corriger:
          #include <stdio.h>
          #include <stdlib.h>

          int main()
          {
                  printf("Hello world!\n");
                  return 0;
          }

          :lol::lol:
          • Partager sur Facebook
          • Partager sur Twitter
            2 juillet 2006 à 22:59:06

            aucune erreur (enfin dans le code sinon le programme ferme tout de suite :p )
            • Partager sur Facebook
            • Partager sur Twitter
              2 juillet 2006 à 23:26:15

              Bon si vous jouez au jeu de "je recherche les erreures dans les codes des autres", qui veut dire de maniére détournée "aidez moi, j'y arrive pas !", je veux bien jouer :-° .
              Voici mon code :
              #include <stdio.h>
              #include <stdlib.h>
              #include <time.h>

              int genereNombre (long NombreEntre)
              {
                  long nombreMystere = 0;
                  const long MAX = 100, MIN = 1;
                 
                  srand(time(NULL));
                  nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

              }

              int compareNombres ()
              {
                  long nombreMystere;
                  long NombreEntre;
                 if ( NombreEntre > nombreMystere )
                      printf("C'est moins !\n\n");
                 else if ( NombreEntre < nombreMystere )
                      printf("C'est plus !\n\n");
                 else
                      printf("Bravo, vous avez trouve le nombre mystere !\n");   
              }
                     
              int main ( int argc, char** argv )
              {
                  long nombreMystere = 0, nombreEntre = 0;
                  const long MAX = 100, MIN = 1;
                 
                  // Génération du nombre aléatoire
                  nombreMystere = genereNombre(MIN, MAX);
                 
                  /* La boucle du programme. Elle se répète tant que l'utilisateur
                  n'a pas trouvé le nombre mystère */


                  do
                  {
                      printf("Quel est le nombre ? ");
                      scanf("%ld", &nombreEntre);

                      compareNombres(nombreEntre, nombreMystere);

                  } while (nombreEntre != nombreMystere);


                  system("PAUSE");
              }
              • Partager sur Facebook
              • Partager sur Twitter
                2 juillet 2006 à 23:28:40

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

                int genereNombre (const long MIN,const long MAX)
                {
                    long nombreMystere = 0;

                    srand(time(NULL));
                    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

                }

                int compareNombres ()
                {
                    long nombreMystere;
                    long NombreEntre;
                   if ( NombreEntre > nombreMystere )
                        printf("C'est moins !\n\n");
                   else if ( NombreEntre < nombreMystere )
                        printf("C'est plus !\n\n");
                   else
                        printf("Bravo, vous avez trouve le nombre mystere !\n");
                }

                int main ( int argc, char** argv )
                {
                    long nombreMystere = 0, nombreEntre = 0;
                    const long MAX = 100, MIN = 1;

                    // Génération du nombre aléatoire
                    nombreMystere = genereNombre(MIN, MAX);

                    /* La boucle du programme. Elle se répète tant que l'utilisateur
                    n'a pas trouvé le nombre mystère */


                    do
                    {
                        printf("Quel est le nombre ? ");
                        scanf("%ld", &nombreEntre);

                        compareNombres(nombreEntre, nombreMystere);

                    } while (nombreEntre != nombreMystere);


                    system("PAUSE");
                }
                • Partager sur Facebook
                • Partager sur Twitter
                  2 juillet 2006 à 23:50:50

                  Voila :
                  #include <stdio.h>
                  #include <stdlib.h>
                  #include <time.h>

                  int genereNombre (const long MIN,const long MAX)
                  {
                      long nombreMystere = 0;

                      srand(time(NULL));
                      nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

                  }

                  int compareNombres ()
                  {
                      long nombreMystere;
                      long NombreEntre;
                     if ( NombreEntre > nombreMystere )
                       { printf("C'est moins !\n\n");}
                     else if ( NombreEntre < nombreMystere )
                          {printf("C'est plus !\n\n"); }
                     else
                         { printf("Bravo, vous avez trouve le nombre mystere !\n"); }
                  }

                  int main ( int argc, char** argv )
                  {
                      long nombreMystere = 0, NombreEntre = 0;
                      const long MAX = 100, MIN = 1;

                      // Génération du nombre aléatoire
                      nombreMystere = genereNombre(MIN, MAX);

                      /* La boucle du programme. Elle se répète tant que l'utilisateur
                      n'a pas trouvé le nombre mystère */


                      do
                      {
                          printf("Quel est le nombre ? ");
                          scanf("%ld", &NombreEntre);

                          compareNombres(NombreEntre, nombreMystere);

                      } while (NombreEntre != nombreMystere);


                      system("PAUSE");
                  }

                  Edit :les principales erreures était les accordales " { , } " et les " N " majuscule dans " nombreEntre " , " NombreEntre "parce que on voit le " N" majuscule dans le début dans le int genernombre .
                  • Partager sur Facebook
                  • Partager sur Twitter
                    2 juillet 2006 à 23:54:23

                    Houssam-C : Grilled par moi :soleil:
                    • Partager sur Facebook
                    • Partager sur Twitter
                      3 juillet 2006 à 8:43:45

                      C'est con ce jeu. Suffit de copier-coller le code dans un IDE et tu connaitras les erreurs -_-''
                      • Partager sur Facebook
                      • Partager sur Twitter
                        3 juillet 2006 à 9:31:10

                        Insomniak > Perso je ne voit pas comment faire pour déceler les erreur...
                        Peut etre parce que je suis encore un débutant...
                        Bon tout d'abord merci de votre aide, mais sa ne marche toujours pas. Au moins il se compile. Mais le probleme c'est que ce n'est pas 1 le nombre minimum... Je tape 1 il me dit "c'est moins" et pareil quand je tape zéro...
                        Pourriez vous m'aider ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          3 juillet 2006 à 12:20:24

                          En fait il veut se faire corriger ses codes sans que ça se voit ... :-° ...
                          • Partager sur Facebook
                          • Partager sur Twitter
                            3 juillet 2006 à 12:56:46

                            int compareNombres ()
                            {
                                long nombreMystere;
                                long NombreEntre;
                               if ( NombreEntre > nombreMystere )
                                 { printf("C'est moins !\n\n");}
                               else if ( NombreEntre < nombreMystere )
                                    {printf("C'est plus !\n\n"); }
                               else
                                   { printf("Bravo, vous avez trouve le nombre mystere !\n"); }
                            }

                            /*...*/

                                    compareNombres(NombreEntre, nombreMystere);


                            Hum non mais quand vous corrigez, faudrait faire attention à ne pas mettre des trucs faux !

                            Premièrement : int compareNombre ? ok, mais faudrait peut-être faire un return sur un int or la il n'y a rien à retourner : donc la fonction est de type void !

                            Deuxièmement : pas de paramètres dans la déclaration de fonction ? ok mais on n'en passe pas à l'appel de fonction ! Donc le proto de la fonction n'est pas :
                            int compareNombre();
                            mais c'est :
                            int compareNombre (long nombre1, long nombre2); et on enlève les déclaration de nombreMystere et nombreEntre à l'intérieur qui servent à rien !

                            Voilà ça ça m'a tout de suite choqué mais j'édite pour le reste si il reste des erreurs !


                            Edit : bon même problème sur genereNombre :
                            int genereNombre (const long MIN,const long MAX)
                            {
                                long nombreMystere = 0;

                                srand(time(NULL));
                                nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

                            }
                            /*...*/
                            nombreMystere = genereNombre(MIN, MAX);


                            bon nombreMystere est un long et tu lui associe un int vu que la fonction est de type int ! De plus tu ne renvoie rien dans la fonction donc nombreMystere est égale à ... que dalle !

                            Donc voici un code corrigé :
                            #include <stdio.h>
                            #include <stdlib.h>
                            #include <time.h>

                            long genereNombre (const long MIN,const long MAX)
                            {
                                srand(time(NULL));
                                return ((rand() % (MAX - MIN + 1)) + MIN);

                            }

                            void compareNombres (long n1, long n2)
                            {
                               if ( n1 > n2 )
                                 { printf("C'est moins !\n\n");}
                               else if ( n1 < n2 )
                                    {printf("C'est plus !\n\n"); }
                               else
                                   { printf("Bravo, vous avez trouve le nombre mystere !\n"); }
                            }

                            int main ( int argc, char** argv )
                            {
                                long nombreMystere = 0, NombreEntre = 0;
                                const long MAX = 100, MIN = 1;

                                // Génération du nombre aléatoire
                                nombreMystere = genereNombre(MIN, MAX);

                                /* La boucle du programme. Elle se répète tant que l'utilisateur
                                n'a pas trouvé le nombre mystère */


                                do
                                {
                                    printf("Quel est le nombre ? ");
                                    scanf("%ld", &NombreEntre);

                                    compareNombres(NombreEntre, nombreMystere);

                                } while (NombreEntre != nombreMystere);


                                getchar(); /*system ("PAUSE"); n'existe pas sous Linux ou Mac OS donc getchar(); est préférable*/

                                return EXIT_SUCCESS; /*Eh oui la fonction main est de type int il faut renvoyer quelque chose !!! */
                            }
                            • Partager sur Facebook
                            • Partager sur Twitter
                              3 juillet 2006 à 13:22:21

                              Citation : Insomniak

                              C'est con ce jeu. Suffit de copier-coller le code dans un IDE et tu connaitras les erreurs -_-''


                              Mais tu peux toi créer toi des ereur que l'IDE lui les connait pas. :D:D
                              • Partager sur Facebook
                              • Partager sur Twitter
                                3 juillet 2006 à 15:46:38

                                Merci, merci et encore merci pour ces aides si précieuses... :)
                                Maintenant, j'en suis au cour de Mateo sur les pointeurs et j'aimerais avoir une petite précision.
                                Il nous apprend que lorsque l'on tape la variable "age" (exemple de son cour) avec
                                %ld, ça nous renvoie la valeur (10 en l'occurence ici). Il nous dit aussi que lorsque l'on tape "&age", on peut savoir l'addresse de cette valeur avec %p (hexadécimal) et %ld (décimal). Mais que renvoie %p avec "age" o_O ?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  3 juillet 2006 à 16:37:20

                                  Si je ne dis pas de bêtise, il renvoie la valeur hexadécimale contenue dans la variable age.
                                  Donc si age vaut 10, ça donne quelque chose comme "A" en hexadécimal.

                                  Si t'as pas compris, sache que de toute façon on s'en fout royalement de ça :p
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  If you'd like to join us, read "How do we work at OpenClassrooms"! :)

                                    3 juillet 2006 à 16:59:48

                                    D'accord ! et encore merci pour tes magnifiques tutos :D !!
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      3 juillet 2006 à 17:30:49

                                      Existe-t-il aussi un %machin pour le nombre en binaire ?
                                      En fait je mettais dis que je ferais un convertisseur décimal-hexadécimal-binaire mais si en plus de %p y'en a un pour le binaire ça sert à rien !
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        3 juillet 2006 à 18:41:35

                                        Alors je vois que vous avez oubliez que vous êtes dans un sujet ou il y a un jeu! Alors continuer le jeu et c'est à toi la main pierre89!
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          3 juillet 2006 à 21:51:14

                                          Bon même si ce n'est pas à moi de jouer, j'ai un petit probleme que j'aimerais résoudre dans le jeu ^^
                                          En fait dans la lecon sur les pointeurs, il fallait réaliser une conversion du temps en minute en heure/minute. Je l'ai fait, mais ça n'affichait rien à l'écran. Alors après, embété, j'ai décidé de copier coller le code de M@téo (pour voir mes erreurs bien sur :) )Et la toujours pareil, quand je le lançais, il affichait directement "appuyez sur une touche pour continuer". Matéo aurait il fait une erreur ?

                                          Voici le code :

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

                                          void decoupeMinutes(long* pointeurHeures, long* pointeurMinutes);

                                          int main(int argc, char *argv[])
                                          {
                                              long heures = 0, minutes = 90;

                                              // On envoie l'adresse de heures et minutes dans la fonction decoupeMinutes.
                                              decoupeMinutes(&heures, &minutes);

                                              // Cette fois, les valeurs ont été modifiées !
                                              printf("%ld heures et %ld minutes", heures, minutes);

                                              return 0;
                                          }

                                          void decoupeMinutes(long* pointeurHeures, long* pointeurMinutes)
                                          {
                                              /* Attention à ne pas oublier de mettre une étoile devant le nom
                                              des pointeurs ! Comme ça, vous pouvez modifier la valeur des variables,
                                              et non leur adresse ! Vous ne voudriez pas diviser des adresses
                                              n'est-ce pas ? ;o) */

                                             
                                              *pointeurHeures = *pointeurMinutes / 60;
                                              *pointeurMinutes = *pointeurMinutes % 60;
                                              system("PAUSE");
                                          }
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            3 juillet 2006 à 22:16:00

                                            Je crois que ça résoudras ton problème :
                                            #include <stdio.h>
                                            #include <stdlib.h>

                                            void decoupeMinutes(long* pointeurHeures, long* pointeurMinutes);

                                            int main(int argc, char *argv[])
                                            {
                                                long heures = 0, minutes = 90;

                                                // On envoie l'adresse de heures et minutes dans la fonction decoupeMinutes.
                                                decoupeMinutes(&heures, &minutes);

                                                // Cette fois, les valeurs ont été modifiées !
                                                printf("%ld heures et %ld minutes", heures, minutes);

                                                system("PAUSE");
                                                return 0;
                                            }

                                            void decoupeMinutes(long* pointeurHeures, long* pointeurMinutes)
                                            {
                                                /* Attention à ne pas oublier de mettre une étoile devant le nom
                                                des pointeurs ! Comme ça, vous pouvez modifier la valeur des variables,
                                                et non leur adresse ! Vous ne voudriez pas diviser des adresses
                                                n'est-ce pas ? ;o) */

                                               
                                                *pointeurHeures = *pointeurMinutes / 60;
                                                *pointeurMinutes = *pointeurMinutes % 60;

                                            }

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              3 juillet 2006 à 22:17:07

                                              Forcément tu mets ton system("PAUSE"); dans ta fonction !!!

                                              En fait le programme fait bien quelque chose ! Essaie de mettre un printf("Bonjour"); avant l'appel de fonction et tu verras qu'il s'affichera !

                                              Mais arrivé dans la fonction il fait ce qu'on lui demande et mets le programme en pause !


                                              EDIT : grilled ! Tout de même un commentaire sur ta façon de faire Oussama : tu donnes souvent un code et jamais d'explication même en commentaire donc stp donne des précisions (un peu comme je l'ai fait !)
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                3 juillet 2006 à 22:22:10

                                                Merci a vous deux !! :)
                                                En fait je ne crois pas que ce soit expliqué dans les tutos parce qu'il ne met plus system("PAUSE") mais c'est vrai à la limite j'aurais pus trouver tout seul... :-°
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  3 juillet 2006 à 22:25:07

                                                  Au fait pour le jeu je passe la main : pas que ça m'intéresse pas je pense même que ça peut aider à ne plus faire certaine erreur, mais c'est que j'ai pas trop le temps de coder un code faux ^^ ! (Je dois déjà finir cet éditeur !)
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    3 juillet 2006 à 22:26:09

                                                    Pierre89 : Tu crois pas que c'est mon tour ?
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      3 juillet 2006 à 22:28:34

                                                      Citation : Doudane

                                                      Alors je vois que vous avez oubliez que vous êtes dans un sujet ou il y a un jeu! Alors continuer le jeu et c'est à toi la main pierre89!



                                                      Pour ça je parlais vu que je ne l'avais pas pris et que le second problème ne faisait pas partie du jeu !

                                                      Alors calme toi et prends la main puisque je la laisse !
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        3 juillet 2006 à 22:38:13

                                                        Tu ne la laisse pas car tu as été grillé.
                                                        C'est moi qui la laisse.
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          3 juillet 2006 à 23:40:04

                                                          Citation : oussama1305

                                                          Tu ne la laisse pas car tu as été grillé.
                                                          C'est moi qui la laisse.



                                                          Absolument pas ! Relis le problème que tu as corrigé et tu verras qu'il dit qu'il profite de ce post mais que cela ne fait pas parti du jeu (bah oui il n'a pas la correction alors !).

                                                          Mais si ça te fait tant plaisir de prendre la main pour la laisser juste derrière je ne saurais ma permettre de te priver de cette joie !
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            3 juillet 2006 à 23:47:15

                                                            allez allez ne vous battez pas et proposez plutot, je serai ravi de voir si je peux maintenant déceler des petites erreur :)
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              3 juillet 2006 à 23:48:41

                                                              Vous vous rendez compte de pour quoi vous vous prenez la tête ?
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Jeu du programme C/C++!

                                                              × 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