Partage
  • Partager sur Facebook
  • Partager sur Twitter

erreur dans les fonctions

    12 août 2008 à 22:31:08

    salut!
    j'apprend du C et je suis au chapitre des fonctions
    dans l'exercice ou on dit de reformuler le jeux plus ou moin j'ai un problem
    j'ai cette erreur et j'ai sais pas comment la corriger
    too many arguments to function `genereNombre'
    voila mon code


    #include <stdio.h>
    #include <stdlib.h>
    
    long genereNombre (long nombreg)
    {
         long nombremystere,MAX,MIN;
         srand(time(NULL));
         nombremystere = (rand() % (MAX - MIN + 1)) + MIN;
         return nombreg;
    }
    long compareNombres (long nac)
    {
         long nombreEntre;
         if (nac >= nombreEntre)
         printf("c'est plus!");
         else if (nac <= nombreEntre)
         printf("c'est moin!");
         else
         printf("bravo! vou l'avez trouvé!");
         return nac;
    }
    int main ( int argc, char** argv )
    {
        long nombreMystere = 0, nombreEntre = 0;
        const long MAX = 100, MIN = 1;
        
        nombreMystere = genereNombre(MIN, MAX);
        
        do
        {    
            printf("Quel est le nombre ? ");
            scanf("%ld", &nombreEntre);
            compareNombres(nombreEntre, nombreMystere);
        
        } while (nombreEntre != nombreMystere);
        
        
        system("PAUSE");
        return 0;
    }
    

    vos conseils me serait forts utiles
    • Partager sur Facebook
    • Partager sur Twitter
      12 août 2008 à 22:37:17

      long genereNombre (long nombreg)
      


      Tu définies une fonction ne prenant qu'un argument, or

      nombreMystere = genereNombre(MIN, MAX);
      


      Tu l'appelles avec deux arguments, MIN et MAX. Il y a un problème de conception donc.

      De même pour compareNombres. Peut être devrais tu relire le chapitre sur les fonctions.
      • Partager sur Facebook
      • Partager sur Twitter
        12 août 2008 à 22:52:08

        Et t'entraîner un peu en anglais aussi ! ^^
        too many arguments to function `genereNombre'

        "Trop d'arguments pour la fonction 'genereNombre'"
        Ce qui signifie que tu utilises mal ta fonction (tu lui passes plus d'arguments que ce qu'il y a de noté dans sa définition).

        C'est pas dur à comprendre (c'est fait pour) et en plus je suis sûr que ton compilateur doit t'indiquer la ligne qui pose problème, non ?
        • Partager sur Facebook
        • Partager sur Twitter
          13 août 2008 à 0:00:58

          non ca ne m'indique pas la ligne de l'erreur :/
          pour l'anglais j'ai compris mais j'ai juste pas su comment corriger Keiristos
          merci Octal , je vais aussi relire le chapitre question de bien m'initier sur les fonctions
          • Partager sur Facebook
          • Partager sur Twitter
            13 août 2008 à 0:33:47

            Citation : hitman-47

            non ca ne m'indique pas la ligne de l'erreur :/


            Merci de ne pas raconter n'importe quoi...
            -------------- Build: Debug in hello ---------------
            
            Compiling: main.c
            C:\dev\hello\main.c: In function `genereNombre':
            C:\dev\hello\main.c:7: warning: implicit declaration of function `time'
            C:\dev\hello\main.c: In function `compareNombres':
            C:\dev\hello\main.c:16: warning: will never be executed
            C:\dev\hello\main.c:19: warning: will never be executed
            C:\dev\hello\main.c:13: warning: 'nombreEntre' might be used uninitialized in this function
            C:\dev\hello\main.c: In function `main':
            C:\dev\hello\main.c:27: error: too many arguments to function `genereNombre'
            C:\dev\hello\main.c:33: error: too many arguments to function `compareNombres'
            C:\dev\hello\main.c: At top level:
            C:\dev\hello\main.c:22: warning: unused parameter 'argc'
            C:\dev\hello\main.c:22: warning: unused parameter 'argv'
            Process terminated with status 1 (0 minutes, 0 seconds)
            2 errors, 6 warnings
            • Partager sur Facebook
            • Partager sur Twitter
            Music only !
              13 août 2008 à 2:39:40

              Citation : -ed-

              Merci de ne pas raconter n'importe quoi...


              merci d'être un peu plus poli que ca...
              • Partager sur Facebook
              • Partager sur Twitter
                13 août 2008 à 6:06:41

                Citation : hitman-47

                Citation : -ed-

                Merci de ne pas raconter n'importe quoi...


                merci d'être un peu plus poli que ca...


                Il n'est pas impoli, il te dit juste que ton compilateur t'indique bien la ligne de l'erreur.
                A mon avis, tu devrais revoir le chapitre sur les fonctions, parce que ça :
                long genereNombre (long nombreg)
                {
                     long nombremystere,MAX,MIN;
                     srand(time(NULL));
                     nombremystere = (rand() % (MAX - MIN + 1)) + MIN;
                     return nombreg;
                }
                

                Est faux. Tu demandes à ta fonction de prendre un nombre, et de le renvoyer sans qu'il intervienne ou prenne la valeur d'un calcul.
                • Partager sur Facebook
                • Partager sur Twitter
                  13 août 2008 à 11:25:19

                  Citation : aska990

                  A mon avis, tu devrais revoir le chapitre sur les fonctions, parce que ça :

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


                  Est faux. Tu demandes à ta fonction de prendre un nombre, et de le renvoyer sans qu'il intervienne ou prenne la valeur d'un calcul.



                  Exact et du coup :
                  long compareNombres (long nac)
                  {
                       long nombreEntre;
                       if (nac >= nombreEntre)
                       printf("c'est plus!");
                       else if (nac <= nombreEntre)
                       printf("c'est moin!");
                       else
                       printf("bravo! vou l'avez trouvé!");
                       return nac;
                  }
                  


                  Tu pourrais utiliser une fonction qui retourne void :
                  void compareNombres (long nac)
                  {
                       long nombreEntre;
                  
                       if (nac >= nombreEntre)
                           printf("C'est plus !");
                       else if (nac <= nombreEntre)
                           printf("C'est moins !");
                       else
                           printf("Bravo ! Vous l'avez trouvé !");
                  }
                  


                  Sans oublier les fautes d'orthographe ! :p
                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 août 2008 à 12:48:20

                    Wah, je viens de tilter !
                    void compareNombres (long nac)
                    {
                         long nombreEntre;
                    
                         if (nac >= nombreEntre)
                             printf("C'est plus !");
                         else if (nac <= nombreEntre)
                             printf("C'est moins !");
                         else
                             printf("Bravo ! Vous l'avez trouvé !");
                    }
                    


                    C'est quoi se délire avec nombreEntre ? Vu comment tu l'utilise ça doit être ça plutôt :
                    void compareNombres (long nombreEntre, long nac)
                    {
                         if (nac > nombreEntre)
                             printf("C'est plus !");
                         else if (nac < nombreEntre)
                             printf("C'est moins !");
                         else
                             printf("Bravo ! Vous l'avez trouvé !");
                    }
                    

                    Et puis tu avais mis des >= et <=, réfléchis un peu...
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      13 août 2008 à 12:52:46

                      Citation : hitman-47

                      Citation : -ed-

                      Merci de ne pas raconter n'importe quoi...


                      merci d'être un peu plus poli que ca...


                      Non mais ! :colere:
                      • Partager sur Facebook
                      • Partager sur Twitter
                        14 août 2008 à 1:24:56

                        pour les >= et <= j'ai juste pris l'habitude :lol:
                        • Partager sur Facebook
                        • Partager sur Twitter

                        erreur dans les fonctions

                        × 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