Partage
  • Partager sur Facebook
  • Partager sur Twitter

Constantes pas constantes

    19 juin 2006 à 18:54:43

    <question></question>

    Bonjour à tous ;)
    Le programme se lance, et tout à l'aire de bien fonctionner, enfin presque. Car le nombre généré par l'ordi est completement débile. Pourtant je déclare bien mes constantes en debut de programme. Elles sont censées ne pas sortir de 1 à 100, non ?

    Que dois je faire ?

    Merci pour votre aide !

    <code type="c"></code>
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    long genereNombre(const long MAX, const long MIN)////////////////////////
    {
    long nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
    return nombreMystere;
    }
    long compareNombres(long nombreEntre, long nombreMystere)////////////////
    {
    long compteur =0, continuer = 0;
    if (nombreEntre > nombreMystere)
    {
    printf (" - - C'est moin ! - -\n\n");
    }
    else if (nombreEntre < nombreMystere)
    {
    printf (" - - C'est plus ! - -\n\n");
    }
    else if (nombreEntre = nombreMystere) // si le nombre est trouvé
    {
    printf ("\n\n");
    printf (" ===========================================================\n");
    printf (" Bravo,vous avez trouver le nombre myster en %ld coups.\n\n", compteur);
    printf (" ===========================================================\n");
    printf ("\n\n");
    printf (" * voulez vous continuer ? *\n");
    printf (" * *\n");
    printf (" * ____ 1. OUI ____ *\n");
    printf (" * ____ 0. NON ____ *\n");
    printf (" * *\n");
    printf (" * Tapez votre choix : ");
    scanf ("%ld", &continuer);
    printf (" ***************************\n\n\n\n");

    if (continuer == 0)
    {
    printf (" ===========================================================\n");
    printf (" Vous avez chosis d'arreter, a tres bientot. \n");
    printf (" ===========================================================\n");
    printf ("\n\n");
    }
    }
    return nombreEntre, nombreMystere;

    }
    /////////////////////////////////////////////////////////////////////////
    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
    {
    // 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
      19 juin 2006 à 19:14:32

      coucou

      Alors pour étre plus propre met le avec le Zcode .

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

      long genereNombre(const long MAX, const long MIN)////////////////////////
      {
      long nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
      return nombreMystere;
      }
      long compareNombres(long nombreEntre, long nombreMystere)////////////////
      {
      long compteur =0, continuer = 0;
      if (nombreEntre > nombreMystere)
      {
      printf (" - - C'est moin ! - -\n\n");
      }
      else if (nombreEntre < nombreMystere)
      {
      printf (" - - C'est plus ! - -\n\n");
      }
      else if (nombreEntre = nombreMystere) // si le nombre est trouvé
      {
      printf ("\n\n");
      printf (" ===========================================================\n");
      printf (" Bravo,vous avez trouver le nombre myster en %ld coups.\n\n", compteur);
      printf (" ===========================================================\n");
      printf ("\n\n");
      printf (" * voulez vous continuer ? *\n");
      printf (" * *\n");
      printf (" * ____ 1. OUI ____ *\n");
      printf (" * ____ 0. NON ____ *\n");
      printf (" * *\n");
      printf (" * Tapez votre choix : ");
      scanf ("%ld", &continuer);
      printf (" ***************************\n\n\n\n");

      if (continuer == 0)
      {
      printf (" ===========================================================\n");
      printf (" Vous avez chosis d'arreter, a tres bientot. \n");
      printf (" ===========================================================\n");
      printf ("\n\n");
      }
      }
      return nombreEntre, nombreMystere;

      }
      /////////////////////////////////////////////////////////////////////////
      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
      {
      // 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");
      }


      perso je ne trouve pas ton code tres claire mais bon
      • Partager sur Facebook
      • Partager sur Twitter
        19 juin 2006 à 19:16:32

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

        long genereNombre(const long MAX, const long MIN)////////////////////////
        {
            long nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
            return nombreMystere;
        }

        long compareNombres(long nombreEntre, long nombreMystere)////////////////
        {
            long compteur =0, continuer = 0;
            if (nombreEntre > nombreMystere)
            {
                printf (" - - C'est moin ! - -\n\n");
            }
            else if (nombreEntre < nombreMystere)
            {
                printf (" - - C'est plus ! - -\n\n");
            }
            else if (nombreEntre = nombreMystere) // si le nombre est trouvé
            {
                printf ("\n\n");
                printf (" ===========================================================\n");
                printf (" Bravo,vous avez trouver le nombre myster en %ld coups.\n\n", compteur);
                printf (" ===========================================================\n");
                printf ("\n\n");
                printf (" * voulez vous continuer ? *\n");
                printf (" * *\n");
                printf (" * ____ 1. OUI ____ *\n");
                printf (" * ____ 0. NON ____ *\n");
                printf (" * *\n");
                printf (" * Tapez votre choix : ");
                scanf ("%ld", &continuer);
                printf (" ***************************\n\n\n\n");

                if (continuer == 0)
                {
                      printf (" ===========================================================\n");
                     printf (" Vous avez chosis d'arreter, a tres bientot. \n");
                     printf (" ===========================================================\n");
                     printf ("\n\n");
                }
            }
            return nombreEntre, nombreMystere;
        }


        /////////////////////////////////////////////////////////////////////////
        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
            {
                // 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");
        }


        tu as oublié srand(time(NULL)) au debut de ton main. ;)

        • Partager sur Facebook
        • Partager sur Twitter
          19 juin 2006 à 20:59:36

          De plus, tu dois employer l'instruction return à la fin de main().
          • Partager sur Facebook
          • Partager sur Twitter
            19 juin 2006 à 21:18:48

            Est-ce que tu a fait du copie-coller souvent avec ton code? car je vois toujours la même erreur!

            long genereNombre(const long MAX, const long MIN)

            nombreMystere = genereNombre(MIN, MAX);

            Peut être à-tu oublier de le changer tantôt, ou bien tu n'a pas compris, mais alors remplace ceci par cela:


            nombreMystere = genereNombre(MIN, MAX);
                                           \ /
                                            X
                                           / \
            nombreMystere = genereNombre(MAX, MIN);


            J'espere que mon "dessin" n'est pas trop moche!
            • Partager sur Facebook
            • Partager sur Twitter
              19 juin 2006 à 21:34:19

              Voila le bon code, il marche et t'es pas obliger de mettre "return" à la fin de "main", ca marche sans.
              Merci à toi, oui j'avais inverser MIN et MAX !


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

              long genereNombre(const long MAX, const long MIN)////////////////////////
              {
                   long nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                   return nombreMystere;
              }
              long compareNombres(long nombreEntre, long nombreMystere)////////////////
              {
                   long compteur =0, continuer = 0;
                   if (nombreEntre > nombreMystere)
                {
                     printf ("         - -  C'est moin !  - -\n\n");
                }
                else if (nombreEntre < nombreMystere)
                {
                     printf ("         - -  C'est plus !  - -\n\n");
                }
                else if (nombreEntre = nombreMystere) // si le nombre est trouvé
                {
                     printf ("\n\n");
                     printf ("  ===========================================================\n");
                     printf ("     Bravo,vous avez trouver le nombre myster en %ld coups.\n\n", compteur);
                     printf ("  ===========================================================\n");
                     printf ("\n\n");
                     printf ("                  * voulez vous continuer ? *\n");
                     printf ("                  *                         *\n");
                     printf ("                  *    ____ 1. OUI ____     *\n");
                     printf ("                  *    ____ 0. NON ____     *\n");
                     printf ("                  *                         *\n");
                     printf ("                  * Tapez votre choix : ");
                     scanf ("%ld", &continuer);
                     printf ("                  ***************************\n\n\n\n");
                     
                     if (continuer == 0)
                     {
                     printf ("  ===========================================================\n");
                     printf ("          Vous avez chosis d'arreter, a tres bientot.        \n");
                     printf ("  ===========================================================\n");
                     printf ("\n\n");
                     }
                     }
                     return nombreEntre, nombreMystere;
                     
              }
              /////////////////////////////////////////////////////////////////////////
              int main ( int argc, char** argv )
              {
                  srand(time(NULL));
                  long nombreMystere = 0, nombreEntre = 0;
                  const long MAX = 100, MIN = 1;
                 

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

                  /* 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("Entrer un 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
                19 juin 2006 à 21:39:42

                Il est vrai qu'un return dans le main ne semble pas utile, mais
                il semble que ça fasse partie des normes de programmation :-° ...

                On peut rien y faire, mais si tu garde ton programme seulement pour ton
                apprentissage et que tu planifie pas de le donner aux autres, t'es pas obliger
                de suivre les normes :p
                • Partager sur Facebook
                • Partager sur Twitter
                  19 juin 2006 à 21:48:49

                  Pourquoi un return pour main? voyez la fonction:
                  int main(...)

                  Donc elle doit retourner un int.
                  On pourrait penser a mettre void main mais ce n'est pas dans les standards du C (ni du C++)

                  Pourquoi mettre int?
                  Parce que l'ordinateur attend une valeur de retour au programme: 0 si tout va bien et autre chose sinon.

                  Tentez de mettre 1 ou autre dasn le return. Vous verez dans la fenêtre qui donne les erreurs de compilation (sous Code::Blocks en tout cas) il sera écrit que le programme a retourné 1 écrit en rouge. Ça signifie que le programme a "buggé" a quelque part. Exemple: Sur mon snake pas plus tard que hier. Le le lançais, l'écran restait noir durant 1 - 2 sec et refermait et je voyais que le programme avait retourné 1 donc qu'il y avait erreur.


                  Voila a quoi sert le return dasn main :p

                  (P.S. dsl pour le roman ^^ )

                  (P.S.2 selon les standard main revoit un int donc pas de char m,ain() long main() ou autre :) )
                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 juin 2006 à 22:11:57

                    Citation : garçon_etoile

                    Voila le bon code, il marche et t'es pas obliger de mettre "return" à la fin de "main", ca marche sans.



                    Arg ! Ce n'est pas parce que 'ça marche' que ce n'est pas obligatoire.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 juin 2006 à 22:13:47

                      ok, desolé, je le mettrais tout le temps à partir de maintenant, par respect du code et ces normes, voila ! ^^
                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 juin 2006 à 22:29:18

                        Heureux de l'entendre. A retenir pour un cas semblable et ultérieur.
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Constantes pas constantes

                        × 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