Partage
  • Partager sur Facebook
  • Partager sur Twitter

problemen dans mon code (plus ou moins)

    7 mai 2006 à 20:37:15

    bonjour a tous :)
    voila j'ai un probleme avec mon code
    c'est le plus ou moins, en utilisant les fonctions
    dev ne veut pas compiler :colere2: l'enflure !

    donc ya forcément une erreur dans mon code mais j'arrive pas a la trouver o_O

    et je suis presque sur que mon code est faux, car ya une chose que j'ai pas compris dans les fonctions, c'est ce qu'il faut mettre entre les parenthese du début, et apres le return

    exemple :

    double conversion(double euros)
    {
        double francs = 0;
       
        francs = 6.55957 * euros;
        return francs;
    }   

    int main(int argc, char *argv[])
    {   
        printf("10 euros = %lfF\n", conversion(10));
        printf("50 euros = %lfF\n", conversion(50));
        printf("100 euros = %lfF\n", conversion(100));
        printf("200 euros = %lfF\n", conversion(200));
       
        system("PAUSE");   
        return 0;
    }


    voila dans ce code je ne comprends pas pour quoi on marque (double euros)
    et je ne sais jamais quoi mettre apres le return :(

    alors si une ame genereuse passe par la, peut-etre pourra t'elle résoure mon probleme :p

    merci d'avance ;)

    edit: HUM je viens de m'apercevoir que j'ai oublié de mettre mon code :D
    le voila :

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

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

    long compareNombres()
    {
         
         long nombreEntre = 0, nombreMystere = 0;
                             
         if(nombreEntre < nombreMystere)
         {
         printf("C'est plus !\n\n");
         }
         else if(nombreEntre > nombreMystere)
         {
         printf("C'est moins !\n\n");
         }
         else
         {
         printf("Bravo vous avez trouvé le nombre mystere !");
         }
         
    }
             

    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");
    }
    • Partager sur Facebook
    • Partager sur Twitter
      7 mai 2006 à 20:42:12

      Citation : divayht

      donc ya forcément une erreur dans mon code mais j'arrive pas a la trouver o_O

      double conversion(double euros)

      Déjà, il n'y a pas les headers... A part ça, le code est correct et il se comporte comme prévu :

      10 euros = 65.595700F
      50 euros = 327.978500F
      100 euros = 655.957000F
      200 euros = 1311.914000F
      Appuyez sur une touche pour continuer...

      • Partager sur Facebook
      • Partager sur Twitter
      Music only !
        7 mai 2006 à 20:44:15

        ba le premier code est censé etre bon puisqu'il vient du cours de mateo :p

        mais c'est le deuxieme qui vient de moi et qui est faux
        • Partager sur Facebook
        • Partager sur Twitter
          7 mai 2006 à 20:45:43

          L'argument de ta première fonction n'est pas utilisé.
          Ta deuxième fonction est obligatoirement fausse vu que tu mets les deux variables à 0 et tu les compares.

          Comme par hasard :
          main.c: In function `main':
          main.c:43: error: too many arguments to function `genereNombre'

          main.c:56:2: warning: no newline at end of file
          Process terminated with status 1 (0 minutes, 1 seconds)


          Trop d'argument dans la fonction genereNombre.

          Bon, vas reviser le chapitre sur les fonctions, tu n'es pas au point. :p

          Citation : Pas de titre

          voila dans ce code je ne comprends pas pour quoi on marque (double euros)
          et je ne sais jamais quoi mettre apres le return :(


          Bah une accolade ?

          Citation : Pas de titre

          et je suis presque sur que mon code est faux, car ya une chose que j'ai pas compris dans les fonctions, c'est ce qu'il faut mettre entre les parenthese du début, et apres le return


          Rien.

          Au fait, pourquoi une indentation de 24 espaces ?


          Code qui marche mal avec scanf tout moche :
          Secret (cliquez pour afficher)
          #include <stdio.h>
          #include <stdlib.h>
          #include <time.h>

          int genereNombre(const int MIN, const int MAX)
          {
              return (rand() % (MAX - MIN + 1)) + MIN;
          }

          void compareNombres(int nombreEntre, int nombreMystere)
          {
              if (nombreEntre < nombreMystere)
              {
                  printf("C'est plus !\n\n");
              }

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

              else
              {
                  printf("Bravo vous avez trouve le nombre mystere !");
              }

          }


          int main (void)
          {
              int nombreMystere = 0, nombreEntre = 0;
              const int MAX = 100, MIN = 1;

              srand(time(NULL));

              nombreMystere = genereNombre(MIN, MAX);

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

                  compareNombres(nombreEntre, nombreMystere);

              }
              while (nombreEntre != nombreMystere);


              return 0;
          }


          • Partager sur Facebook
          • Partager sur Twitter
            7 mai 2006 à 20:47:14

            Vas voir ici

            Citation : M@teo

            parametres (correspond à l'entrée) : entre parenthèses, vous pouvez envoyer des paramètres à la fonction. Ce sont des valeurs avec lesquelles la fonction va travailler.
            Par exemple, pour une fonction "triple", vous envoyez un nombre en paramètre. La fonction "récupère" ce nombre et en calcule le triple, en le multipliant par 3. Elle renvoie ensuite le résultat de ses calculs.



            Après le return tu doit doit mettre le nom de la variable dont tu veut récupérer la valeur grace à la fonction.
            Par exemple quand tu appelle la fonction conversion tu souhaite convertir une valeur de l'euro vers les francs. Donc ton parametre à envoyer à la fonction est la valeur en euro et ce que doit te retourner la fonction est une valeur en francs. C'est pour ça que tu met return frans.
            (Je sais pas si j'ais été clair).

            EDIT: le temps que j'écrive y s'est ait dit pas mal de choses

            Ta fonction devrait plutot être comme ça:
            long genereNombre()
            {
                 
                                   long nombreMystere = 0;
                                   const long MIN = 1, MAX = 100;
                                   
                                   srand(time(NULL));
                                   nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                 
                                   return nombreMystere;
            }


            ou comme ça:
            long genereNombre(long MIN, long MAX)
            {
                 
                                   long nombreMystere = 0;
                                   srand(time(NULL));
                                   nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                                   return nombreMystere;
            }

            • Partager sur Facebook
            • Partager sur Twitter
              7 mai 2006 à 21:00:34

              Citation : seb13

              ou comme ça:

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



              Sauf que, et je n'arrive pas à comprendre pourquoi ce message passe mal, srand() doit être appelé une seule fois au début du programme. Qu'est qu'il fait avec rand() Explication ?

              Et c'est quoi cette tabulation démentielle ?
              • Partager sur Facebook
              • Partager sur Twitter
              Music only !
                7 mai 2006 à 21:04:18

                J'avais pa vu, je me suis occupé que des paramètres de la fonction et du return. Le reste c'est pas de moi.
                Désolé (le copier-coller parfois c'est pas bien).
                • Partager sur Facebook
                • Partager sur Twitter
                  7 mai 2006 à 21:07:55

                  desole pour la tabulation j'le r'f'rais promis :D

                  merci beaucoup de votre aide et de votre rapidité, elles m'ont été précieuses
                  je vais essayer de le refaire
                  je le poste quand j'ai fini ^^

                  edit: ça veut toujours pas compiler :(

                  long genereNombre()
                  {


                  Je vois pas ce qu'il y a de faux la dedans :euh:

                  edit2:avec la deuxieme methode ( long genereNombre(long MIN, long MAX...) ça marche
                  mais arrivé a

                  long compareNombres()
                  {


                  ça bloque o_O
                  • Partager sur Facebook
                  • Partager sur Twitter
                    7 mai 2006 à 21:27:55

                    Essaye ça (d'après Kr00pS légèrement modifié) :
                    void compareNombres(long nombreEntre, long nombreMystere)
                    {
                        if (nombreEntre < nombreMystere)
                        {
                            printf("C'est plus !\n\n");
                        }

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

                        else
                        {
                            printf("Bravo vous avez trouve le nombre mystere !");
                        }

                    }
                    • Partager sur Facebook
                    • Partager sur Twitter
                      7 mai 2006 à 21:32:53

                      ça marche sauf que quand je trouve le bon nombre ça referme automatiquement la console sans message préalable o_O

                      bizarre quand meme, c'est peut-etre parce qu'il n'y a pas de boucle mais ça m'étonnerait beaucoup quand meme :-°

                      merci pour votre aide deja fournise ;)

                      edit: donc la voici "mon" code

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

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

                      void compareNombres(long nombreEntre, long nombreMystere)
                      {
                          if (nombreEntre < nombreMystere)
                          {
                              printf("C'est plus !\n\n");
                          }

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

                          else
                          {
                              printf("Bravo vous avez trouve le nombre mystere !");
                          }

                      }



                      int main (void)
                      {
                          int nombreMystere = 0, nombreEntre = 0;
                          const int MAX = 100, MIN = 1;

                          srand(time(NULL));

                          nombreMystere = genereNombre(MIN, MAX);

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

                              compareNombres(nombreEntre, nombreMystere);

                          }
                          while (nombreEntre != nombreMystere);


                          return 0;
                      }


                      edit: tssss je suis pas futefute quand meme :D
                      un petit system("PAUSE"); et ça marche du tonnerre :p

                      merci beaucoup :)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        7 mai 2006 à 21:36:44

                        Met ton code complet pour voir
                        • Partager sur Facebook
                        • Partager sur Twitter
                          7 mai 2006 à 21:41:21

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

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

                          void compareNombres(long nombreEntre, long nombreMystere)
                          {
                              if (nombreEntre < nombreMystere)
                              {
                                  printf("C'est plus !\n\n");
                              }

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

                              else
                              {
                                  printf("Bravo vous avez trouve le nombre mystere !\n\n");
                                  system("PAUSE");
                             
                              }

                          }



                          int main (void)
                          {
                              int nombreMystere = 0, nombreEntre = 0;
                              const int MAX = 100, MIN = 1;

                              srand(time(NULL));

                              nombreMystere = genereNombre(MIN, MAX);

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

                                  compareNombres(nombreEntre, nombreMystere);

                              }
                              while (nombreEntre != nombreMystere);


                              return 0;
                          }


                          ce code marche :D
                          • Partager sur Facebook
                          • Partager sur Twitter
                            7 mai 2006 à 21:47:13

                            Citation : ...

                            Essaye ça (d'après Kr00pS légèrement modifié) :
                            [...]


                            Exact, j'ai mis int et ça retourne rien; Je vais corriger ça.

                            Citation : ...

                            [...]
                            ce code marche :D


                            Mais il est faux.
                            Il faut encore corriger la méthode de saisie, essaye de taper une lettre dans ta saisie et regarde ce que ça fait.

                            Google :
                            Premièrement tu recherches : man 3 fgets
                            Deuxièmement : man 3 sscanf
                            Troisièmement : man 3 strtol
                            Quatrièmement : man 3 strtod
                            • Partager sur Facebook
                            • Partager sur Twitter
                              7 mai 2006 à 21:55:42

                              euh...j'ai fait les recherches googles mais je ne comprend pas grand chose et je vois pas en quoi ça va régler mon probleme de plantage si on rentre une lettre :euh:

                              ce que j'ai compris c'est que ça convertit en un reel double (du moins pour la derniere) donc si je rentre cette fonction dans mon code ça devrait régler mon probleme ? :o

                              ça me semble bizarre tout ça...
                              • Partager sur Facebook
                              • Partager sur Twitter
                                7 mai 2006 à 22:01:53

                                char saisie[20];
                                int nombre, b_retour;

                                do
                                {
                                     fgets(saisie, sizeof saisie, stdin);
                                     clean(saisie, stdin);
                                     b_retour = sscanf(saisie, "%d", &nombre);
                                }
                                while (b_retour == -1)


                                Exercice : A toi de chercher sur le site la fonction clean donné énormement de fois.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  7 mai 2006 à 22:35:09

                                  erf desole je comprends vraiment pas ton code :(
                                  en plus on peut pas le compiler o_O

                                  et j'ai pas trouvé la fonctionc clear :(

                                  quel looser ...
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    8 mai 2006 à 13:09:40

                                    up :p

                                    quelqu'un pourrait m'aider sur ce mystérieux code ?

                                    merci d'avance :)
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      8 mai 2006 à 14:33:13

                                      Citation : divayht

                                      erf desole je comprends vraiment pas ton code :(


                                      Alors je commente (avec quelques corrections) :

                                      /* tableau pour stocker le resultat de la saisie */
                                      char saisie[20];

                                      /* entier pour stocker le resultat de la conversion */
                                      int nombre;

                                      /* entier pour stocker le compte rendu de la conversion */
                                      int b_retour;
                                      do
                                      {
                                           /* saisir une ligne de texte (par l'utilisateur : clavier) */
                                           fgets(saisie, sizeof saisie, stdin);

                                           /* Supprimmer le '\n' dans la ligne de texte saisie,
                                              nettoyer stdin si necessaire */

                                           clean(saisie, stdin);

                                           /* Convertir la chaine en valeur numerique. En cas de succes,
                                              retourne le nombre de conversions reussies, sinon,
                                              retourne autre chose */

                                           b_retour = sscanf(saisie, "%d", &nombre);
                                      }
                                      /* -ed- tant que la saisie est incorrecte, on redemande... */
                                      while (b_retour != 1);

                                      en plus on peut pas le compiler o_O

                                      Citation : divayht

                                      et j'ai pas trouvé la fonctionc clear :(


                                      Ce qui manque est clean() (et non clear()) que j'ai publié de nombreuses fois...

                                      void clean (char *s, FILE *fp)
                                      {
                                         /* search ... */
                                         char *p = strchr (s, '\n'); /* <string.h> */
                                         if (p != NULL)
                                         {
                                            /* ... and kill */
                                            *p = 0;
                                         }
                                         else
                                         {
                                            /* purge */
                                            int c;
                                            while ((c = fgetc(fp)) != '\n' && c != EOF)
                                            {
                                            }
                                         }
                                      }

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Music only !
                                        8 mai 2006 à 20:18:34

                                        merci de ton aide je comprends deja un peu plus, cependant c'est pas concluant :(

                                        en fait ya pas de termes que j'ai pas compris:

                                        - char saisie [20]

                                        la je comprends pas pourquoi il y a des crochets o_O

                                        -sizeof
                                        -char *s, FILE *fp
                                        -strchr (s, '\n') (la je comprends pas strchr, ni ce que "s" vient faire la :-°
                                        -fgetc(fp)
                                        -EOF

                                        je sais ça fait beaucoup :(

                                        désolé de vous embeter avec ça mais j'aimerais comprendre^^
                                        merci de l'effort deja fourni en tout cas :)
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          8 mai 2006 à 20:23:08

                                          Lis la suite du cours car la c'est clair, tu ne comprendras rien.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            8 mai 2006 à 21:22:27

                                            d'accord :)

                                            la je vais bosser les fonctions et apres je m'attaquerais aux bases avancées :)
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              8 mai 2006 à 22:02:19

                                              Citation : divayht

                                              en fait ya pas de termes que j'ai pas compris:

                                              - char saisie [20]

                                              la je comprends pas pourquoi il y a des crochets o_O


                                              C'est pour définir un tableau de char...
                                              (je note : les I/O doivent être étudiées après les tableaux et les chaines ...)

                                              Citation : divayht


                                              -sizeof


                                              Cet opérateur retourne la taille d'un objet en nombre de bytes (unité de compte de la taille mémoire).

                                              Citation : divayht


                                              -char *s, FILE *fp


                                              Pointeur sur char (concerne souvent les chaines de caractères)...
                                              Pointeur sur FILE (manipulation des fichiers)

                                              Citation : divayht


                                              -strchr (s, '\n') (la je comprends pas strchr, ni ce que "s" vient faire la :-°


                                              C'est une foncton standard qui recherche un caractère dans une chaine.

                                              Citation : divayht


                                              -fgetc(fp)


                                              fonction standard qui extrait 1 caractère d'un flux.

                                              Citation : divayht


                                              -EOF


                                              Valeur particulière (int < 0) retournée par fgetc(), différente de toutes les valeurs possibles d'un caractère et signifiant "Fin de lecture du flux.". Les causes sont 'fin de fichier atteinte' ou 'erreur de lecture'.

                                              Tout ceci est élémentaire et sera vu dans les cours de M@teo.
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              Music only !
                                                9 mai 2006 à 20:44:18

                                                merci beaucoup :)

                                                en fait c'est normal si je comprenais pas, je suis pas encore assez avancé dans le cours :(

                                                j'ai vu ni les tableaux ni les pointeurs^^

                                                merci d'avoir répondu a ma question en tout cas :)
                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                problemen dans mon code (plus ou moins)

                                                × 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