Partage
  • Partager sur Facebook
  • Partager sur Twitter

Plus ou moins

recommencer le jeux ou pas

    2 novembre 2006 à 19:15:56

    Bonjour,
    je lis les cours sur le c/c++
    Et je suis arriver au premier tp que j'ais réussi mais c'est quand je voulait ajouter une fonction (recommencer ou quitter ) que je bloque ...
    quitter marche mais recommencer lui non
    mon code :
    #include <stdio.h>
    #include <stdlib.h>//préprocesseurs
    #include <time.h>

    int main(int argc, char *argv[])
    {
    int continu = 1 ; //on fait les vaiables 
    const long MAX = 100, MIN = 1;
    long coup = 0 ;
          srand(time(NULL));//génération du nombre mystere
    long nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
    long nombre = 0 ;
    while ( continu )//boucle pour quitter//recommencer le prog .
    {
    while (nombre != nombreMystere)//boucle jusqua que le nombre mystere soit trouver
    {
    printf ("Quelle est le nombre mystere ?") ;//demande le nombre
    scanf ("%ld",&nombre) ;
    if ( nombre < nombreMystere )
    {
         printf("Trop petit ") ;//trop petit et incrémentent
    coup++;
    }
    else if ( nombre > nombreMystere )
    {
         printf("trop grand ") ;//trop grand et incrémentent
         coup++;
         }
         else if ( nombreMystere == nombre )
         {
             
              printf("gagne !en %ld coup !\n",coup  ) ;//gagné et changement de la variable
              printf("Vouler quitter ?\n ")   ;
              printf("Si oui taper 0 si non taper 1 \n") ;
              scanf("%d",&continu) ;
             
    }
    }
    }
      system("PAUSE");      //pause
      return 0;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      2 novembre 2006 à 19:26:45

      Je crois que c'est parce que t'as pas mis une "limite" a ta premiere boucle.
      Par exemple pour recommencer il faudrait que la variable recommencer = 1.
      Or dans ta boucle rien n'indique cela.
      Enfin je crois :)
      • Partager sur Facebook
      • Partager sur Twitter
        2 novembre 2006 à 19:29:54

        Non car c'est un booléen merci quand meme .
        • Partager sur Facebook
        • Partager sur Twitter
          2 novembre 2006 à 19:32:09

          Salut. Peux tu indenter correctement ton code pour que celui-ci soit plus lisible. De plus, tu utilises un char pour ton booleen mais tu utilises "%ld" dans ton scanf or celui-ci attend l'adresse d'un long il a donc incompatibilité au niveau de ton type. Utilise donc un int ainsi que le code de format "%d". Une fois que ceci sera fait, il sera possible de débugger ;)
          • Partager sur Facebook
          • Partager sur Twitter
            2 novembre 2006 à 19:50:47

            j'ais éditer mon code
            (p.s ) :
            je suis nouveau j'ais fais comme tu dis ?
            • Partager sur Facebook
            • Partager sur Twitter
              2 novembre 2006 à 19:53:52

              Citation : liomec

              j'ais éditer mon code
              (p.s ) :
              je suis nouveau j'ais fais comme tu dis ?



              Presque, indente ton code maintenant, si tu es sous CodeBlocks, il y a un outil qui permet d'indenter le code, cherche Source Code Formatter dans les menus.
              • Partager sur Facebook
              • Partager sur Twitter
                2 novembre 2006 à 20:00:30

                Citation : liomec

                je suis sous dev c/c++



                Bon et bien prends le temps d'essayer CodeBlocks. En attendant, voici ton code indenté


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

                int main(int argc, char *argv[])
                {
                        int continu = 1 ; //on fait les vaiables
                        const long MAX = 100, MIN = 1;
                        long coup = 0 ;
                        srand(time(NULL));
                        long nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                        long nombre = 0 ;
                        while ( continu )//boucle pour quitter//recommencer le prog .
                        {
                                while (nombre != nombreMystere)//boucle jusqua que le nombre mystere soit trouver
                                {
                                        printf ("Quelle est le nombre mystere ?") ;//demande le nombre
                                        scanf ("%ld",&nombre) ;
                                        if ( nombre < nombreMystere )
                                        {
                                                printf("Trop petit ") ;//trop petit et incrémentent
                                                coup++;
                                        }
                                        else if ( nombre > nombreMystere )
                                        {
                                                printf("trop grand ") ;//trop grand et incrémentent
                                                coup++;
                                        }
                                        else if ( nombreMystere == nombre )
                                        {
                                                printf("gagne !en %ld coup !\n",coup  ) ;//gagné et changement de la variable
                                                printf("Vouler quitter ?\n ")   ;
                                                printf("Si oui taper 0 si non taper 1 \n") ;
                                                scanf("%d",&continu) ;
                                        }
                                }       
                        }
                        system("PAUSE");     
                        return 0;
                }


                J'éditerai plus tard ou quelqu'un répondra pour te dire ce qui ne va pas.
                • Partager sur Facebook
                • Partager sur Twitter
                  2 novembre 2006 à 20:46:21

                  Tient, voilà le code :

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

                  int main(int argc, char *argv[])
                  {
                          int continu = 1 ; //on fait les vaiables
                          const long MAX = 100, MIN = 1;
                          long coup = 0 ;
                          srand(time(NULL));
                          long nombreMystere = 0;
                          long nombre = 0 ;

                          while ( continu )//boucle pour quitter//recommencer le prog .
                          {
                                  nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                                  while (nombre != nombreMystere)//boucle jusqua que le nombre mystere soit trouver
                                  {
                                          printf ("Quelle est le nombre mystere ?") ;//demande le nombre
                                          scanf ("%ld",&nombre) ;
                                          if ( nombre < nombreMystere )
                                          {
                                                  printf("Trop petit ") ;//trop petit et incrémentent
                                                  coup++;
                                          }
                                          else if ( nombre > nombreMystere )
                                          {
                                                  printf("trop grand ") ;//trop grand et incrémentent
                                                  coup++;
                                          }
                                          else if ( nombreMystere == nombre )
                                          {
                                                  printf("gagne !en %ld coup !\n",coup  ) ;//gagné et changement de la variable
                                                  printf("Vouler quitter ?\n ")   ;
                                                  printf("Si oui taper 0 si non taper 1 \n") ;
                                                  scanf("%d",&continu) ;
                                          }
                                  }
                          }
                          system("PAUSE");
                          return 0;
                  }


                  Ce que j'Ai changé, c'Est

                  //[...]
                          long nombreMystere = 0;
                          long nombre = 0 ;

                          while ( continu )//boucle pour quitter//recommencer le prog .
                          {
                                  nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                  //[...]


                  Là où il faut générer le nombreMystere, c'est dans le premier while et non là où tu déclares les variables... sinon nombreMystere va toujours être la même et donc du coup, la 2e boucle ne pourra pas s'executer
                  • Partager sur Facebook
                  • Partager sur Twitter
                    2 novembre 2006 à 22:45:38

                    Citation : liomec

                    mon code :

                    #include <stdio.h>
                    #include <stdlib.h>//préprocesseurs
                    #include <time.h>

                    int main(int argc, char *argv[])
                    {
                    int continu = 1 ; //on fait les vaiables 
                    const long MAX = 100, MIN = 1;
                    long coup = 0 ;
                          srand(time(NULL));//génération du nombre mystere
                    long nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                    long nombre = 0 ;
                    while ( continu )//boucle pour quitter//recommencer le prog .
                    {
                    while (nombre != nombreMystere)//boucle jusqua que le nombre mystere soit trouver
                    {
                    printf ("Quelle est le nombre mystere ?") ;//demande le nombre
                    scanf ("%ld",&nombre) ;
                    if ( nombre < nombreMystere )
                    {
                         printf("Trop petit ") ;//trop petit et incrémentent
                    coup++;
                    }
                    else if ( nombre > nombreMystere )
                    {
                         printf("trop grand ") ;//trop grand et incrémentent
                         coup++;
                         }
                         else if ( nombreMystere == nombre )
                         {
                             
                              printf("gagne !en %ld coup !\n",coup  ) ;//gagné et changement de la variable
                              printf("Vouler quitter ?\n ")   ;
                              printf("Si oui taper 0 si non taper 1 \n") ;
                              scanf("%d",&continu) ;
                             
                    }
                    }
                    }
                      system("PAUSE");      //pause
                      return 0;
                    }

                    Franchement, tu trouves ça lisible comme code ? Je fais une simple ré-indentation avec le formateur de code de Code::Blocks

                    Plugins / Source code formatteur

                    et j'obtiens ça :
                    #include <stdio.h>
                    #include <stdlib.h>//préprocesseurs
                    #include <time.h>

                    int main(int argc, char *argv[])
                    {
                       int continu = 1 ; //on fait les vaiables
                       const long MAX = 100, MIN = 1;
                       long coup = 0 ;
                       srand(time(NULL)); //génération du nombre mystere
                       long nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                       long nombre = 0 ;
                       while ( continu ) //boucle pour quitter//recommencer le prog .
                       {
                          while (nombre != nombreMystere) //boucle jusqua que le nombre mystere soit trouver
                          {
                             printf ("Quelle est le nombre mystere ?") ; //demande le nombre
                             scanf ("%ld", &nombre) ;
                             if ( nombre < nombreMystere )
                             {
                                printf("Trop petit ") ; //trop petit et incrémentent
                                coup++;
                             }
                             else if ( nombre > nombreMystere )
                             {
                                printf("trop grand ") ; //trop grand et incrémentent
                                coup++;
                             }
                             else if ( nombreMystere == nombre )
                             {

                                printf("gagne !en %ld coup !\n", coup ) ; //gagné et changement de la variable
                                printf("Vouler quitter ?\n ") ;
                                printf("Si oui taper 0 si non taper 1 \n") ;
                                scanf("%d", &continu) ;

                             }
                          }
                       }
                       system("PAUSE");      //pause
                       return 0;
                    }

                    C'est pas mieux ?

                    Maintenant qu'on arrive à lire le code, ça devient beaucoup plus simple pour le mettre au point et le simplifier :

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

                    int main (void)
                    {
                       int continu = 1;
                       const long MAX = 100, MIN = 1;

                       srand (time (NULL));

                       //boucle pour quitter
                       //recommencer le prog .
                       do
                       {
                          //génération du nombre mystere
                          long nombreMystere = (rand () % (MAX - MIN + 1)) + MIN;
                          long coup = 0;
                          long nombre = 0;

                          //boucle jusqua que le nombre mystere soit trouver
                          do
                          {
                             //demande le nombre
                             printf ("Quelle est le nombre mystere ? ");
                             fflush (stdout);
                             scanf ("%ld", &nombre);
                             if (nombre < nombreMystere)
                             {
                                //trop petit et incrémentent
                                printf ("Trop petit\n");
                             }
                             else if (nombre > nombreMystere)
                             {
                                //trop grand et incrémentent
                                printf ("trop grand\n");
                             }
                                coup++;
                          }
                          while (nombre != nombreMystere);

                          //gagné et changement de la variable
                          printf ("gagne !en %ld coup !\n", coup);
                          printf ("Vouler quitter ?\n ");
                          printf ("Si oui taper 0 si non taper 1\n");
                          scanf ("%d", &continu);
                       }
                       while (continu != 0);
                       return 0;
                    }


                    Quelle est le nombre mystere ? 50
                    trop grand
                    Quelle est le nombre mystere ? 25
                    Trop petit
                    Quelle est le nombre mystere ? 37
                    trop grand
                    Quelle est le nombre mystere ? 31
                    trop grand
                    Quelle est le nombre mystere ? 28
                    Trop petit
                    Quelle est le nombre mystere ? 29
                    gagne !en 6 coup !
                    Vouler quitter ?
                    Si oui taper 0 si non taper 1
                    1
                    Quelle est le nombre mystere ? 50
                    trop grand
                    Quelle est le nombre mystere ? 25
                    Trop petit
                    Quelle est le nombre mystere ? 37
                    Trop petit
                    Quelle est le nombre mystere ? 43
                    trop grand
                    Quelle est le nombre mystere ? 40
                    trop grand
                    Quelle est le nombre mystere ? 39
                    gagne !en 6 coup !
                    Vouler quitter ?
                    Si oui taper 0 si non taper 1
                    0

                    Press ENTER to continue.
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Music only !
                      3 novembre 2006 à 1:54:26

                      Salut j'ai vue vos essai et j'ai essaiyé d'améloiré.
                      J'aurai voulu avoir votre avis.

                      Voici mon main.c:


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

                      int main ( int argc, char *argv )
                      {
                          long MAX = 0, MIN = 0;
                          long *pmax = &MAX, *pmin = &MIN;
                           printf("Bonjour et bienvenue dans plus ou moins.\n");


                          long choi = 0;
                          // Génération du nombre aléatoire
                          srand(time(NULL));
                          do
                          {
                          choi = 0;
                          long nombreMystere = 0, nombreEntre = 0, nombreDeJoueur = 0;

                           nivo (pmax, pmin);    // choi du niveau

                           printf("Le but du jeu est de trouver le nombre mystere\n");
                           printf("qui est compris entre %ld et %ld.\n\n", MIN, MAX);
                           printf("Bonne chance!\n\n");
                          // Génération du nombre aléatoire

                          printf("Voulez vous jouer en mode 1  ou 2 joueurs ?\n");
                          printf("Entrez 1 pour le mode 1 joueur\n\n");
                          printf("Entrez 2 pour le mode 2 joueur\n");
                          scanf("%ld", &nombreDeJoueur);

                          if(nombreDeJoueur == 2)
                          {
                          printf("L'un des joueur doit entrer le nomdre mystere compris entre %ld et %ld\n", MIN, MAX);
                          printf("L'autre va le chercher!\n\n");
                          printf("Quel est le nombre mystere?");
                          scanf("%ld", &nombreMystere);
                          printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
                          }
                          else if(nombreDeJoueur == 1)
                          {
                          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 nombreet on compte les coups
                           printf("Quel est le nombre ? ");
                           scanf("%ld", &nombreEntre);


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


                          } while (nombreEntre != nombreMystere);

                          printf("Voulez vous rejouer ? \n\nTaper 0 pour non \n\nEt 1 pour oui\n\n");
                          scanf("%ld", &choi);

                          } while (choi !=0);


                        return 0;
                      }



                      Voici nombre.c:


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

                      long coup = 0;
                      static long niveau = 0;

                      long genereNombre(long MIN, long MAX)
                      {


                           long nombreMystere = 0;
                          nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                        return nombreMystere;
                      }

                      long compareNombre(long nombreEntre, long nombreMystere, long MAX, long MIN)
                      {


                              if (nombreEntre < MIN || nombreEntre > MAX)
                              {
                              printf("Le nombre mystere est compris entre %ld et %ld\n\n", MIN, MAX);
                              coup++;
                              }
                              else if (nombreMystere > nombreEntre)
                              {
                              printf("C'est plus !\n\n");
                              coup++;
                              }
                              else if (nombreMystere < nombreEntre)
                              {
                              printf("C'est moins !\n\n");
                              coup++;
                              }
                              else if (nombreMystere = nombreEntre)
                              {
                              coup++;
                              printf("Bravo, vous avez trouve le nombre mystere en %ld coups!!!\n\n", coup);
                              coup = 0;
                              }
                      }

                      long nivo ( long* MAX, long* MIN)
                      {

                           do
                           {
                           printf("A quel niveau voulez-vous jouer :\n1.debutant \n2.confirmer \n3.expert \n4.sans peur.\n\n");
                           scanf("%ld", &niveau);
                           switch(niveau)
                           {
                           case 1:
                           printf("Vous avez choisi le niveau dedutant!\n");
                           *MAX = 100 ;
                           *MIN = 0 ;
                           break;
                           case 2:
                           printf("Vous avez choisi le niveau confirmer!\n");
                           *MAX = 1000;
                           *MIN = 0 ;
                           break;
                           case 3:
                           printf("Vous avez choisi le niveau expert!\n");
                           *MAX = 10000;
                           *MIN = 0 ;
                           break;
                           case 4:
                           printf("Vous avez choisi le niveau sans peur!\n");
                           *MAX = 100000 ;
                           *MIN = 0 ;
                           break;
                           default:
                           printf("vous devez saisir un nombre entre 1 et 4 \npour selectionner un niveau!\n\n ");
                           break;
                           }
                           }while (niveau > 4 || niveau <1);

                      }



                      Et voici nombre.h:


                      #ifndef DEF_NOMDUFICHIER // Si la constante n'a pas été définie` le fichier n'a jamais été inclus
                      #define DEF_NOMDUFICHIER // On définit la constante pour que la prochaine fois le fichier ne soit plus inclus


                      // on génere le nombre mystère
                      long genereNombre(long MIN, long MAX);

                      //on compare les nombres
                      long compareNombre(long nombreEntre, long nombreMystere, long MAX, long MIN);

                      long reinitialisation(long coup);

                      long nivo ( long* MAX, long* MIN);

                      #endif


                      Merci d'avance pour vos commentaire cela m'aidrai beaucoup :D .
                      • Partager sur Facebook
                      • Partager sur Twitter
                        3 novembre 2006 à 7:45:23

                        Pas mal d'avoir séparé en plusieurs fichiers et en fonctions ;).
                        des remarques quand même :
                        - Ne jamais utiliser de variables globales (dans un fichier ou dans tous le programme), c'est horrible.
                        - C'est moi ou je vois pas de fonction reinitialisation?

                        Je mets pas le code que moi j'avais taper a l'époque car ce n'est pas un bon exemple (il n'est pas séparé en fonctions et plusieurs fichiers), je l'ai pas retoucher depuis.
                        Mais si tu le veux je peux quand même le poster ;), j'y ai coder toutes les améliorations proposées par M@teo21 si je me souviens bien (niveau, rejouer, mode 2 joueur, compteur de parties, compteur de coups)

                        Kurapix
                        • Partager sur Facebook
                        • Partager sur Twitter
                          3 novembre 2006 à 9:57:36

                          Citation : zariman972

                          Salut j'ai vue vos essai et j'ai essaiyé d'améloiré.
                          J'aurai voulu avoir votre avis.

                          Merci d'avance pour vos commentaire cela m'aidrai beaucoup :D .


                          Voici mes remarques (notées +, =, -) dans l'ordre d'apparition :

                          - Malgré mes recommandations, la présentation du code (indentation) est toujours aussi calamiteuse... Tu utilises quel IDE ?

                          - Mon compilateur révèle un certain nombres de bugs :

                          Project : Forums
                          Compiler : GNU GCC Compiler (called directly)
                          Directory : C:\dev\forums2\
                          --------------------------------------------------------------------------------
                          Switching to target: default
                          Compiling: nombre.c
                          nombre.c: In function `compareNombre':
                          nombre.c:36: warning: suggest parentheses around assignment used as truth value
                          nombre.c:42: warning: control reaches end of non-void function
                          nombre.c: In function `nivo':
                          nombre.c:79: warning: control reaches end of non-void function
                          Compiling: main.c
                          main.c:7: warning: second argument of 'main' should be 'char **'
                          main.c:6: warning: unused parameter 'argc'
                          main.c:6: warning: unused parameter 'argv'
                          Linking console executable: C:\dev\forums2\console.exe
                          Process terminated with status 0 (0 minutes, 7 seconds)
                          0 errors, 6 warnings

                          qu'il conviendrait de corriger avant tout.

                          contrôle visuel de main.c



                          + srand() est bien placé. (C'est tellement rare, que je le souligne).

                          + La fonction 'nivo()' avec ses 2 paramètres, c'est une bonne idée (je l'aurais cependant appelée niveau() ou choix_niveau()). Tu aurais pu simplifier l'appel en passant directement les adresses de MIN et MAX. Plus tard, tu verras qu'on utilise une structure pour remplacer les 2 paramètres...

                          = scanf() est une fonction difficile à utiliser correctement. Des alternatives existent.
                          = if-else if est correct, mais pour un entier on utilise plutôt switch-case

                          = pour sortir, sur stdout, une chaine de caractères non terminée par un \n, il est recommandé de forcer l'affichage avec fflush(stdout).

                          + L'organisation du code est correcte

                          = L'algorithme semble correct, mais il manque un contrôle des valeurs saisies, notamment en mode 2 joueurs.

                          contrôle visuel de nombre.h



                          + C'est bien d'avoir pensé à la protection contre les inclusions multiples.

                          = la fonction reinitialisation() n'est jamais utilisée.

                          contrôle visuel de nombre.c



                          - L'usage des globales est une fausse bonne idée. Si on a besoin de persistance, il faut utiliser les paramètres, comme tu l'a fait pour nivo(). Si il y a beaucoup de paramètres, c'est qu'il faut commencer à organiser ses données en structures. Si malgré tout, tu utilises des globales, met un préfixe G_ (publiques) ou g_ (privées ou static), ca facilite la lecture du code. Ici, elles devraient être privées. (mais encore une fois, mieux vaut apprendre à les éviter).

                          P.S : L'une des globales est complètement inutile. C'est une locale de nivo().

                          = Eviter les lignes longues (> 80 colonnes).
                                printf("A quel niveau voulez-vous jouer :\n1.debutant \n2.confirmer \n3.expert \n4.sans peur.\n\n");

                          On sait faire autrement :
                                printf("A quel niveau voulez-vous jouer :\n"
                                       "1.debutant \n"
                                       "2.confirmer \n"
                                       "3.expert \n"
                                       "4.sans peur.\n\n");

                          Plus lisible, non ?


                          remarque d'ensemble



                          = Vu les valeurs mises en jeu, le type long est injustifié. int, qui est le type entier 'naturel', aurait fait l'affaire. Personnellement, j'aurais utilisé unsigned int.

                          essais



                          Un essai rapide montre, qu'une fois les bugs signalés corrigés, le programme fonctionne correctement. Ca ne prouve pas grand chose tant qu'on a pas fait de tests approfondis...
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Music only !
                            3 novembre 2006 à 15:07:56

                            Bonjour je n'ai pa compris tonte les erreurs -ed- mais j'ai essaiyé d'arrangé les faute et de metre une structure.
                            Alors voila mon nouveau main:


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

                            int main ( void )
                            {
                                MinMax minMax =
                                    {
                                        0, 0
                                    };

                                printf("Bonjour et bienvenue dans plus ou moins.\n");


                                long choi = 0;
                                // Génération du nombre aléatoire
                                srand(time(NULL));

                                do
                                {
                                    choi = 0;
                                    long nombreMystere = 0, nombreEntre = 0, nombreDeJoueur = 0;

                                    nivo (&minMax);    // choi du niveau

                                    printf("Le but du jeu est de trouver le nombre mystere\n");
                                    printf("qui est compris entre %ld et %ld.\n\n", minMax.min, minMax.max);
                                    printf("Bonne chance!\n\n");
                                    // Génération du nombre aléatoire

                                    printf("Voulez vous jouer en mode 1  ou 2 joueurs ?\n");
                                    printf("Entrez 1 pour le mode 1 joueur\n\n");
                                    printf("Entrez 2 pour le mode 2 joueur\n");
                                    scanf("%ld", &nombreDeJoueur);

                                    if(nombreDeJoueur == 2)
                                    {
                                        printf("L'un des joueur doit entrer le nomdre mystere"
                                               " compris entre %ld et %ld\n", minMax.min, minMax.max);
                                        printf("L'autre va le chercher!\n\n");
                                        printf("Quel est le nombre mystere?");
                                        scanf("%ld", &nombreMystere);
                                        printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
                                    }
                                    else if(nombreDeJoueur == 1)
                                    {
                                        nombreMystere = genereNombre(&minMax);
                                    }

                                    /* 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 nombreet on compte les coups
                                        printf("Quel est le nombre ? ");
                                        scanf("%ld", &nombreEntre);


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


                                    }
                                    while (nombreEntre != nombreMystere);

                                    printf("Voulez vous rejouer ? \n\nTaper 0 pour non \n\nEt 1 pour oui\n\n");
                                    scanf("%ld", &choi);

                                }
                                while (choi !=0);


                                return 0;
                            }


                            nombre.c:


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

                            static int coup = 0;

                            long genereNombre(MinMax *m)
                            {

                                long nombreMystere = 0;
                                nombreMystere = (rand() % ((*m).max - (*m).min + 1)) + (*m).min;
                                return nombreMystere;
                            }

                            long compareNombre(long nombreEntre, long nombreMystere, const MinMax *m)
                            {

                                if (nombreEntre < (*m).min || nombreEntre > (*m).max)
                                {
                                    printf("Le nombre mystere est compris entre %ld et %ld\n\n", (*m).min, (*m).max);
                                    coup++;
                                }
                                else if (nombreMystere > nombreEntre)
                                {
                                    printf("C'est plus !\n\n");
                                    coup++;
                                }
                                else if (nombreMystere < nombreEntre)
                                {
                                    printf("C'est moins !\n\n");
                                    coup++;
                                }
                                else if (nombreMystere = nombreEntre)
                                {
                                    coup++;
                                    printf("Bravo, vous avez trouve le nombre mystere en %d coups!!!\n\n", coup);
                                    coup = 0;
                                }
                            }

                            long nivo ( MinMax* m)
                            {

                                long niveau = 0;

                                do
                                {
                                    printf("A quel niveau voulez-vous jouer :\n"
                                           "1.debutant \n"
                                           "2.confirmer \n"
                                           "3.expert \n"
                                           "4.sans peur.\n\n");
                                    scanf("%ld", &niveau);

                                    switch(niveau)
                                    {
                                        case 1:
                                        printf("Vous avez choisi le niveau dedutant!\n");
                                        (*m).max = 100 ;
                                        (*m).min = 0 ;
                                        break;
                                        case 2:
                                        printf("Vous avez choisi le niveau confirmer!\n");
                                        (*m).max = 1000;
                                        (*m).min = 0 ;
                                        break;
                                        case 3:
                                        printf("Vous avez choisi le niveau expert!\n");
                                        (*m).max = 10000;
                                        (*m).min = 0 ;
                                        break;
                                        case 4:
                                        printf("Vous avez choisi le niveau sans peur!\n");
                                        (*m).max = 100000 ;
                                        (*m).min = 0 ;
                                        break;
                                        default:
                                        printf("vous devez saisir un nombre entre 1 et 4 \n"
                                               "pour selectionner un niveau!\n\n ");
                                        break;
                                    }
                                }
                                while (niveau > 4 || niveau <1);

                            }


                            Et nombre.h:


                            #ifndef DEF_NOMDUFICHIER // Si la constante n'a pas été définie` le fichier n'a jamais été inclus
                            #define DEF_NOMDUFICHIER // On définit la constante pour que la prochaine fois le fichier ne soit plus inclus

                            // Contenu de votre fichier .h (autres includes` prototypes de vos fonctions` defines...)
                            typedef struct MinMax MinMax;
                            struct MinMax
                            {
                                long min;
                                long max;
                            };

                            // on génere le nombre mystère
                            long genereNombre(MinMax *m);

                            //on compare les nombres
                            long compareNombre(long nombreEntre, long nombreMystere, const MinMax *m);

                            //on demande le niveau voulu
                            long nivo ( MinMax* m);

                            #endif


                            pour le scanf je n'ai pa tou compris alors je n'ai rien changer :euh: .

                            merci :D .

                            • Partager sur Facebook
                            • Partager sur Twitter
                              3 novembre 2006 à 15:17:07

                              Citation : zariman972

                              Bonjour je n'ai pa compris tonte les erreurs -ed-


                              Il reste ceci :
                              Compiling: nombre.c
                              nombre.c: In function `compareNombre':
                              nombre.c:33: warning: suggest parentheses around assignment used as truth value
                              nombre.c:39: warning: control reaches end of non-void function
                              nombre.c: In function `nivo':
                              nombre.c:85: warning: control reaches end of non-void function

                              Ligne 33 : Tu a mis un =. C'est probablement un ==.
                              Ligne 39 : La fonction retourne un long, mais en réalité, elle ne retourne rien. Je mettrais void en type de retour...
                              Ligne 85 : idem.

                              Sinon, la structure, tu as pensé à mettre un pointeur. C'est très bien, la présentation aussi.

                              Pour l'accès aux variables de la structure via un pointeur, renseigne toi sur l'opérateur ->, ça allège l'écriture...

                              Le pointeur de genereNombre pourrait être const, puisque la fonction ne fait que lire les données de la structure.

                              Reste cette horrible globale et les ignobles scanf()...


                              • Partager sur Facebook
                              • Partager sur Twitter
                              Music only !
                                3 novembre 2006 à 15:28:37

                                J'ai mis les void j'ai changer l'ecriture des pointeurs mais pour la globale je trouve pas d'autre moyen.
                                Tu a une idée.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  3 novembre 2006 à 15:47:22

                                  Citation : zariman972

                                  J'ai mis les void j'ai changer l'ecriture des pointeurs mais pour la globale je trouve pas d'autre moyen.
                                  Tu a une idée.


                                  Toi aussi : comment tu as fait pour min et max ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Music only !
                                    3 novembre 2006 à 15:55:34

                                    Citation : -ed-

                                    Toi aussi : comment tu as fait pour min et max ?



                                    Ben j'ai mis dans nombre.h une structure:

                                    typedef struct MinMax MinMax;
                                    struct MinMax
                                    {
                                        long min;
                                        long max;
                                    };


                                    dans les fonction j'ai crée le pointeur m qui pointe sur MinMax
                                    et pou les utilisé je fais comme ça :

                                    m->min
                                    m->max

                                    mais pour la global j'y arrive pa car elle me sert a initiliser coup la première fois. :D
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      3 novembre 2006 à 19:21:45

                                      Citation : zariman972

                                      mais pour la global j'y arrive pa car elle me sert a initiliser coup la première fois. :D


                                      Tu déplaces cette globale, dans main(), et tu modifies ce qu'il faut pour que ça fonctionne pareil. C'est légèrement plus compliqué, mais si ton code est sur un serveur et que tu a 200 joueurs connectés, ils auront chacun leurs données, bien que le code soit unique...
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Music only !

                                      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