Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème....

What's the problem? :s

Sujet résolu
    27 avril 2006 à 19:47:09

    Euuuu je pige po trop.
    Le débugeur me dit que bah .... y'a un bug :D
    Si vous pourriez m'aider.... car je ne trouve po l'erreur.
    C'est l'exercice à la fin du chapitre sur les fonctions. Entant donné que je n'ai po très bien compris... doit y avoir des erreurs :( svp dites moi si il y en a d'autres mais ne me dites po lesquelles ;)


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

    long nombreMystere = 0, nombreEntre = 0;
    const long MAX = 100, MIN = 1;
    long genereNombre (long nombre)
    {
         srand(time(NULL));
         nombre = (rand() % (MAX - MIN + 1)) + MIN;
         return nombre;
    }
    void compareNombres()
    {
         if (nombreEntre < nombreMystere)
         printf("C'est plus!");
         else if (nombreEntre > nombreMystere)
         printf("C'est moins!");
         else
         printf("Bravo t'as trouve");
    }
    int main ( int argc, char** argv )
    {

        // Génération du nombre aléatoire
        nombreMystere = genereNombre(MIN, MAX); // C'est à cette ligne qu'il indique une erreur....

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


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

            // On compare le nombre entré avec le nombre mystère
            compareNombres(nombreEntre, nombreMystere);

        } while (nombreEntre != nombreMystere);


        system("PAUSE");
    }
    • Partager sur Facebook
    • Partager sur Twitter
      27 avril 2006 à 20:06:25

      Ton erreur est que tu envoie trop de paramètres à la fonction genereNombre, tu envoie :
      MIN et MAX.
      Alors que dans la fonction tu indique qu'elle ne prend qu'un parametre :
      genereNombre (long nombre)

      Le parametre étant une variable et pas une constante.
      • Partager sur Facebook
      • Partager sur Twitter
        27 avril 2006 à 20:13:22

        Ah j'ai remarqué une erreur aussi. La fonction void ne reçoie aucun paramètre...
        • Partager sur Facebook
        • Partager sur Twitter
          27 avril 2006 à 20:38:55

          si tu vx garder min et max, t'as qu'a faire des #define pour "min" et "max". Sinan je vois aps tes prototypes ....
          • Partager sur Facebook
          • Partager sur Twitter
            27 avril 2006 à 20:40:32

            Pas besoin car les fonctions sont avant...
            Ce ne doit pas être ça car le super m@teo (:D) ne nous en a pas parlé...
            Je dois donc quoi faire...?
            Et avez-vous remarqué d'autres erreurs?
            • Partager sur Facebook
            • Partager sur Twitter
              27 avril 2006 à 20:44:26

              T'as rien compris sur les paramètres des fonctions, toi. Ce que tu as mis entre les parenthèses de genereNombre() n'est autre qu'une variable locale que tu utilises dans ta fonction. Sinon, n'utilise surtout pas long, mais plutôt int.

              Citation : tib50

              La fonction void ne reçoie aucun paramètre...


              Et pourquoi pas ? Toi aussi retourne réviser.

              Citation : Johkill

              Le parametre étant une variable et pas une constante.


              Héhé toi aussi apparement, puisque le paramètre est une valeur, de type entier long (remplace long par int !!!).
              • Partager sur Facebook
              • Partager sur Twitter
                27 avril 2006 à 20:44:52

                Le fait que la fonction compareNombres ne renvoie rien ne concerne pas le porbleme puisque elle compare les nombres le probleme se situe dans la fonction qui genere le nombre mystère
                • Partager sur Facebook
                • Partager sur Twitter
                  27 avril 2006 à 20:48:00

                  Je n'ai pas bien compris ça c'est sûr ... c'est zarb j'ai compris tout le reste du chapitre enfin bon je vais ...........réviser!
                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 avril 2006 à 12:05:30

                    Je crois avoir enlevé quelques erreurs ....
                    Mais un problème persiste!
                    Il m'affiche toujours c'est moins.... :(

                    Quel est le problème?

                    Il doit y avoir des erreurs... svp ne vous moquez po :colere2:

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

                    long nombreMystere = 0, nombreEntre = 0;
                    const long MAX = 100, MIN = 1;
                    int genereNombre (const long MAX, const long MIN)
                    {
                         srand(time(NULL));
                         nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                         return nombreMystere;
                    }
                    void compareNombres(long nombreMystere, long nombreEntre)
                    {
                         if (nombreEntre < nombreMystere)
                         {
                         printf("C'est plus!");
                         }
                         else if (nombreEntre > nombreMystere)
                         {
                         printf("C'est moins!");
                         }
                         else
                         {
                         printf("Bravo t'as trouve");
                         }
                    }
                    int main ( int argc, char** argv )
                    {

                        // 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
                        {
                            // On demande le nombre
                            printf("Quel est le nombre ? ");
                            scanf("%ld", &nombreEntre);

                            // On compare le nombre entré avec le nombre mystère
                            compareNombres(nombreEntre, nombreMystere);

                        } while (nombreEntre != nombreMystere);


                        system("PAUSE");
                    }
                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 avril 2006 à 12:11:18

                      Ce n'est pas la peine de faire autant de fonctions !

                      long nombreMystere = 0, nombreEntre = 0;

                      Ca ça va dans la fonction main, ce ne sont pas des globales...

                      Ensuite, utilise des int partout, les longs sont réservés à des utilisations très particulières.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        28 avril 2006 à 12:15:13

                        C'est un exo je sais mais c'est m@teo qui nous conseille cet exo ;)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 avril 2006 à 16:17:03

                          Tu as inversé :

                          compareNombres(nombreEntre, nombreMystere);


                          Et la fonction prend d'abord le nombreMystere :

                          compareNombres(long nombreMystere, long nombreEntre)


                          Le code correct est donc :

                          compareNombres(nombreMystere, nombreEntre);
                          • Partager sur Facebook
                          • Partager sur Twitter
                            28 avril 2006 à 17:55:51

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

                            int nombreMystere = 0, nombreEntre = 0;
                            const int MAX = 100, MIN = 1;
                            int genereNombre (const int MAX, const int MIN)
                            {
                                 srand(time(NULL));
                                 nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                                 return nombreMystere;
                            }
                            void compareNombres(int nombreEntre, int nombreMystere)
                            {
                                 if (nombreEntre < nombreMystere)
                                 {
                                 printf("C'est plus!");
                                 }
                                 else if (nombreEntre > nombreMystere)
                                 {
                                 printf("C'est moins!");
                                 }
                                 else
                                 {
                                 printf("Bravo t'as trouve");
                                 }
                            }
                            int main ( int argc, char** argv )
                            {

                                // 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
                                {
                                    // On demande le nombre
                                    printf("Quel est le nombre ? ");
                                    scanf("%ld", &nombreEntre);

                                    // On compare le nombre entré avec le nombre mystère
                                    compareNombres(nombreEntre, nombreMystere);

                                } while (nombreEntre != nombreMystere);


                                system("PAUSE");
                            }

                            Voilà mon code actuel. Le seul problème est que le nombre choisi n'est jamais compri entre 1 et 100. Il est pour le dire compri entre 1 et 150.
                            What's the solution doctor? :D
                            • Partager sur Facebook
                            • Partager sur Twitter
                              28 avril 2006 à 18:09:24

                              Tu t'es encore trompé sur le passage des arguments de la fonction genereNombre :
                              La fonction est :

                              int genereNombre (const int MAX, const int MIN)


                              Et tu envoie :

                              nombreMystere = genereNombre(MIN, MAX);


                              Le bon code est donc

                              nombreMystere = genereNombre(MAX, MIN);

                              • Partager sur Facebook
                              • Partager sur Twitter

                              Problème....

                              × 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