Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème au niveau de la sélection du nombre

Sujet résolu
    16 novembre 2018 à 8:26:12

    Bonjour j'ai fini mon programme mais j'ai remarqué que pour le niveau 3 et 4 lorsque l'ordinateur choisi le nombre mystère il est toujours dans la moitié inférieur de la valeur max 

    <

    #include <stdio.h>

    #include <stdlib.h>

    #include <time.h>

    int main ( int argc, char *argv[] )

    {

        const int  MIN = 1;

        int coups = 1;

        int nombrechoisi = 0;

        int NombreMystere = 0;

        int NombredeJoueurs = 0;

        int MAX = 0;

        int Niveau = 0;

        int Recommencer = 0;

        do

        {

     coups = 1;

        printf ( "\n\n===MENU===\n\n" );

        printf ( "Choisissez un niveau\n\n" );

        printf ( "Niveau 1\nNiveau 2\nNiveau 3\nNiveau 4\n" );

        scanf ( "%d", &Niveau );

        switch (Niveau)

        {

            case 1 :

        printf ( "\nChoisissez le nombre de joueur\n\n" );

        printf ( "1 JOUEURS\n2 JOUEURS\n" );

        do

        {

     scanf( "%d" , &NombredeJoueurs );

        if( NombredeJoueurs < 1 || NombredeJoueurs > 2 )

        {

            printf("\nNombre incorrect\nVeuillez reessayer\n");

        }

        }

        while ( NombredeJoueurs != 2 && NombredeJoueurs != 1);

        do

        {

        MAX = 100;

        switch ( NombredeJoueurs )

        {

            case 1:

            srand ( time( NULL ) );

            NombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

            printf ( "Tu dois trouve un nombre entre 0 ET 100\n" );

            do

            {

                printf ( "Quel est le nombre?\n" );

                scanf ( "%d",&nombrechoisi );

                if ( NombreMystere == nombrechoisi )

                {

                    printf ( "Tu as trouve en %d coups", coups );

                }

                 else if ( nombrechoisi > 100 )

                {

                    printf( "J'ai dit entre 0 ET 100\n " );

                }

                else if ( NombreMystere < nombrechoisi )

                {

                    ( coups++ );

                    printf ( "C'est moins\n" );

                }

                else if ( NombreMystere > nombrechoisi )

                {

                    ( coups++ );

                    printf ( "C'est plus \n" );

                }

            }

            while ( NombreMystere != nombrechoisi );

            break;

            case 2:

            printf ( " Un des joueurs choisi un nombre entre 0 et 100 sans que l'autre le vois\n" );

            do

    {

             scanf ( "%d", &NombreMystere );

             if ( NombreMystere > 100 )

             {

                printf ( " TU SAIS PAS LIRE OU QUOI ENTRE 0 ET 100!!!\n ");

             }

    }

             while( NombreMystere > 100 );

             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\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

    printf( " Le deuxieme joueurs doit maintenant trouver le nombre qui est entre 0 ET 100\n\n " );

                printf ( "Quel est le nombre?\n" );

                do

                {

                scanf ( "%d",&nombrechoisi );

                if ( NombreMystere == nombrechoisi )

                {

                    printf ( "Tu as trouve en %d coups", coups );

                }

                 else if ( nombrechoisi > 100 || nombrechoisi < 1 )

                {

                    printf( "J'ai dit entre 0 ET 100\n " );

                }

                else if ( NombreMystere < nombrechoisi )

                {

                    ( coups++ );

                    printf ( "C'est moins\n" );

                }

                else if ( NombreMystere > nombrechoisi )

                {

                    ( coups++ );

                    printf ( "C'est plus \n" );

                }

                }

                while (nombrechoisi != NombreMystere);

            break;

    }

     }

            while ( NombreMystere != nombrechoisi );

        break;

        case 2 :

        printf ( "\nChoisissez le nombre de joueur\n\n" );

        printf ( "1 JOUEURS\n2 JOUEURS\n" );

        do

        {

     scanf( "%d" , &NombredeJoueurs );

        if( NombredeJoueurs < 1 || NombredeJoueurs > 2 )

        {

            printf("\nNombre incorrect\nVeuillez reessayer\n");

        }

        }

        while ( NombredeJoueurs != 2 && NombredeJoueurs != 1);

        do

        {

        MAX = 1000;

        switch ( NombredeJoueurs )

        {

            case 1:

            srand ( time( NULL ) );

            NombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

            printf ( "Tu dois trouve un nombre entre 0 ET 1000\n" );

            do

            {

                printf ( "Quel est le nombre?\n" );

                scanf ( "%d",&nombrechoisi );

                if ( NombreMystere == nombrechoisi )

                {

                    printf ( "Tu as trouve en %d coups", coups );

                }

                 else if ( nombrechoisi > 1000 )

                {

                    printf( "J'ai dit entre 0 ET 1000\n " );

                }

                else if ( NombreMystere < nombrechoisi )

                {

                    ( coups++ );

                    printf ( "C'est moins\n" );

                }

                else if ( NombreMystere > nombrechoisi )

                {

                    ( coups++ );

                    printf ( "C'est plus \n" );

                }

            }

            while ( NombreMystere != nombrechoisi );

            break;

            case 2:

            printf ( " Un des joueurs choisi un nombre entre 0 et 1000 sans que l'autre le vois\n" );

            do

    {

             scanf ( "%d", &NombreMystere );

             if ( NombreMystere > 1000 )

             {

                printf ( " TU SAIS PAS LIRE OU QUOI ENTRE 0 ET 1000!!!\n ");

             }

    }

             while( NombreMystere > 1000 );

             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\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

    printf( " Le deuxieme joueurs doit maintenant trouver le nombre qui est entre 0 ET 1000\n\n " );

                printf ( "Quel est le nombre?\n" );

                do

                {

                scanf ( "%d",&nombrechoisi );

                if ( NombreMystere == nombrechoisi )

                {

                    printf ( "Tu as trouve en %d coups", coups );

                }

                 else if ( nombrechoisi > 1000 || nombrechoisi < 1 )

                {

                    printf( "J'ai dit entre 0 ET 1000\n " );

                }

                else if ( NombreMystere < nombrechoisi )

                {

                    ( coups++ );

                    printf ( "C'est moins\n" );

                }

                else if ( NombreMystere > nombrechoisi )

                {

                    ( coups++ );

                    printf ( "C'est plus \n" );

                }

                }

                while (nombrechoisi != NombreMystere);

            break;

    }

     }

            while ( NombreMystere != nombrechoisi );

        break;

        case 3 :

         printf ( "\nChoisissez le nombre de joueur\n\n" );

        printf ( "1 JOUEURS\n2 JOUEURS\n" );

        do

        {

     scanf( "%d" , &NombredeJoueurs );

        if( NombredeJoueurs < 1 || NombredeJoueurs > 2 )

        {

            printf("\nNombre incorrect\nVeuillez reessayer\n");

        }

        }

        while ( NombredeJoueurs != 2 && NombredeJoueurs != 1);

        do

        {

        MAX = 10000;

        switch ( NombredeJoueurs )

        {

            case 1:

            srand ( time( NULL ) );

            NombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

            printf ( "Tu dois trouve un nombre entre 0 ET 10000\n" );

            do

            {

                printf ( "Quel est le nombre?\n" );

                scanf ( "%d",&nombrechoisi );

                if ( NombreMystere == nombrechoisi )

                {

                    printf ( "Tu as trouve en %d coups", coups );

                }

                 else if ( nombrechoisi > 10000 )

                {

                    printf( "J'ai dit entre 0 ET 10000\n " );

                }

                else if ( NombreMystere < nombrechoisi )

                {

                    ( coups++ );

                    printf ( "C'est moins\n" );

                }

                else if ( NombreMystere > nombrechoisi )

                {

                    ( coups++ );

                    printf ( "C'est plus \n" );

                }

            }

            while ( NombreMystere != nombrechoisi );

            break;

            case 2:

            printf ( " Un des joueurs choisi un nombre entre 0 et 10000 sans que l'autre le vois\n" );

            do

    {

             scanf ( "%d", &NombreMystere );

             if ( NombreMystere > 10000 )

             {

                printf ( " TU SAIS PAS LIRE OU QUOI ENTRE 0 ET 10000!!!\n ");

             }

    }

             while( NombreMystere > 10000 );

             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\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

    printf( " Le deuxieme joueurs doit maintenant trouver le nombre qui est entre 0 ET 10000\n\n " );

                printf ( "Quel est le nombre?\n" );

                do

                {

                scanf ( "%d",&nombrechoisi );

                if ( NombreMystere == nombrechoisi )

                {

                    printf ( "Tu as trouve en %d coups", coups );

                }

                 else if ( nombrechoisi > 10000 || nombrechoisi < 1 )

                {

                    printf( "J'ai dit entre 0 ET 10000\n " );

                }

                else if ( NombreMystere < nombrechoisi )

                {

                    ( coups++ );

                    printf ( "C'est moins\n" );

                }

                else if ( NombreMystere > nombrechoisi )

                {

                    ( coups++ );

                    printf ( "C'est plus \n" );

                }

                }

                while (nombrechoisi != NombreMystere);

            break;

    }

     }

            while ( NombreMystere != nombrechoisi );

        break;

         case 4 :

         printf ( "\nChoisissez le nombre de joueur\n\n" );

        printf ( "1 JOUEURS\n2 JOUEURS\n" );

        do

        {

     scanf( "%d" , &NombredeJoueurs );

        if( NombredeJoueurs < 1 || NombredeJoueurs > 2 )

        {

            printf("\nNombre incorrect\nVeuillez reessayer\n");

        }

        }

        while ( NombredeJoueurs != 2 && NombredeJoueurs != 1);

        do

        {

        MAX = 100000;

        switch ( NombredeJoueurs )

        {

            case 1:

            srand ( time( NULL ) );

            NombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

            printf ( "Tu dois trouve un nombre entre 0 ET 100000\n" );

            do

            {

                printf ( "Quel est le nombre?\n" );

                scanf ( "%d",&nombrechoisi );

                if ( NombreMystere == nombrechoisi )

                {

                    printf ( "Tu as trouve en %d coups", coups );

                }

                 else if ( nombrechoisi > 100000 )

                {

                    printf( "J'ai dit entre 0 ET 100000\n " );

                }

                else if ( NombreMystere < nombrechoisi )

                {

                    ( coups++ );

                    printf ( "C'est moins\n" );

                }

                else if ( NombreMystere > nombrechoisi )

                {

                    ( coups++ );

                    printf ( "C'est plus \n" );

                }

            }

            while ( NombreMystere != nombrechoisi );

            break;

            case 2:

            printf ( " Un des joueurs choisi un nombre entre 0 et 100000 sans que l'autre le vois\n" );

            do

    {

             scanf ( "%d", &NombreMystere );

             if ( NombreMystere > 100000 )

             {

                printf ( " TU SAIS PAS LIRE OU QUOI ENTRE 0 ET 100000!!!\n ");

             }

    }

             while( NombreMystere > 100000 );

             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\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

    printf( " Le deuxieme joueurs doit maintenant trouver le nombre qui est entre 0 ET 100000\n\n " );

                printf ( "Quel est le nombre?\n" );

                do

                {

                scanf ( "%d",&nombrechoisi );

                if ( NombreMystere == nombrechoisi )

                {

                    printf ( "Tu as trouve en %d coups", coups );

                }

                 else if ( nombrechoisi > 100000 || nombrechoisi < 1 )

                {

                    printf( "J'ai dit entre 0 ET 100000\n " );

                }

                else if ( NombreMystere < nombrechoisi )

                {

                    ( coups++ );

                    printf ( "C'est moins\n" );

                }

                else if ( NombreMystere > nombrechoisi )

                {

                    ( coups++ );

                    printf ( "C'est plus \n" );

                }

                }

                while (nombrechoisi != NombreMystere);

            break;

    }

     }

            while ( NombreMystere != nombrechoisi );

        break;

        }

        printf ( "\n\nVoulez vous faire une autre partie ?\n" );

        printf ( "Si oui tapez 1\nSi non tapez 0\n" );

        scanf ( "%d", &Recommencer );

        }

        while ( Recommencer = 1 );

        return 0;

    }

    >

     Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      16 novembre 2018 à 11:34:55

      Si tu pouvais poster ton code avec la balise Code prévue pour ce serait beaucoup plus lisible
      • Partager sur Facebook
      • Partager sur Twitter

      Remember, remember, the fifth of November, Gunpowder Treason and Plot, I see no reason why the gunpowder treason should ever be forgot.

        16 novembre 2018 à 12:30:56

        Personne ne lira un code aussi long si tu ne mets pas les balises de code. (bouton :  </>)
        • Partager sur Facebook
        • Partager sur Twitter
          16 novembre 2018 à 16:23:34

          Faut les mettre au début est a la fin?
          • Partager sur Facebook
          • Partager sur Twitter
            16 novembre 2018 à 16:51:40

            Hello,

            ;)

            • Partager sur Facebook
            • Partager sur Twitter

            On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

              16 novembre 2018 à 17:03:20

              #include <stdio.h>
              #include <stdlib.h>
              #include <time.h>
              
              int main ( int argc, char *argv[] )
              {
                  const int  MIN = 1;
              
                  int coups = 1;
                  int nombrechoisi = 0;
                  int NombreMystere = 0;
                  int NombredeJoueurs = 0;
                  int MAX = 0;
                  int Niveau = 0;
                  int Recommencer = 0;
              
                  do
                  {
               coups = 1;
              
                  printf ( "\n\n===MENU===\n\n" );
                  printf ( "Choisissez un niveau\n\n" );
                  printf ( "Niveau 1\nNiveau 2\nNiveau 3\nNiveau 4\n" );
                   scanf ( "%d", &Niveau );
              
              
              
              
                  switch (Niveau)
                  {
                      case 1 :
              
              
                  printf ( "\nChoisissez le nombre de joueur\n\n" );
                  printf ( "1 JOUEURS\n2 JOUEURS\n" );
              
              
                  do
                  {
              
               scanf( "%d" , &NombredeJoueurs );
              
                  if( NombredeJoueurs < 1 || NombredeJoueurs > 2 )
              
                  {
                      printf("\nNombre incorrect\nVeuillez reessayer\n");
              
                  }
                  }
              
                  while ( NombredeJoueurs != 2 && NombredeJoueurs != 1);
              
                  do
                  {
              
                  MAX = 100;
              
                  switch ( NombredeJoueurs )
                  {
                      case 1:
              
                      srand ( time( NULL ) );
                      NombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                      printf ( "Tu dois trouve un nombre entre 0 ET 100\n" );
              
                      do
                      {
                          printf ( "Quel est le nombre?\n" );
                          scanf ( "%d",&nombrechoisi );
              
                          if ( NombreMystere == nombrechoisi )
                          {
                              printf ( "Tu as trouve en %d coups", coups );
                          }
                           else if ( nombrechoisi > 100 )
                          {
                              printf( "J'ai dit entre 0 ET 100\n " );
                          }
                          else if ( NombreMystere < nombrechoisi )
                          {
              
                              ( coups++ );
                              printf ( "C'est moins\n" );
                          }
                          else if ( NombreMystere > nombrechoisi )
                          {
                              ( coups++ );
                              printf ( "C'est plus \n" );
                          }
              
              
              
                      }
                      while ( NombreMystere != nombrechoisi );
                      break;
              
                      case 2:
              
                      printf ( " Un des joueurs choisi un nombre entre 0 et 100 sans que l'autre le vois\n" );
              
                      do
              
              {
              
                       scanf ( "%d", &NombreMystere );
              
                       if ( NombreMystere > 100 )
                       {
                          printf ( " TU SAIS PAS LIRE OU QUOI ENTRE 0 ET 100!!!\n ");
                       }
              }
                       while( NombreMystere > 100 );
              
                       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\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
              printf( " Le deuxieme joueurs doit maintenant trouver le nombre qui est entre 0 ET 100\n\n " );
              
              
                          printf ( "Quel est le nombre?\n" );
              
                          do
                          {
              
                          scanf ( "%d",&nombrechoisi );
              
                          if ( NombreMystere == nombrechoisi )
                          {
                              printf ( "Tu as trouve en %d coups", coups );
                          }
                           else if ( nombrechoisi > 100 || nombrechoisi < 1 )
                          {
                              printf( "J'ai dit entre 0 ET 100\n " );
                          }
                          else if ( NombreMystere < nombrechoisi )
                          {
              
                              ( coups++ );
                              printf ( "C'est moins\n" );
                          }
                          else if ( NombreMystere > nombrechoisi )
                          {
                              ( coups++ );
                              printf ( "C'est plus \n" );
                          }
                          }
                          while (nombrechoisi != NombreMystere);
                      break;
              
              }
               }
              
                      while ( NombreMystere != nombrechoisi );
              
                  break;
              
              
                  case 2 :
              
                  printf ( "\nChoisissez le nombre de joueur\n\n" );
                  printf ( "1 JOUEURS\n2 JOUEURS\n" );
              
              
                  do
                  {
              
               scanf( "%d" , &NombredeJoueurs );
              
                  if( NombredeJoueurs < 1 || NombredeJoueurs > 2 )
              
                  {
                      printf("\nNombre incorrect\nVeuillez reessayer\n");
              
                  }
                  }
              
                  while ( NombredeJoueurs != 2 && NombredeJoueurs != 1);
              
                  do
                  {
              
                  MAX = 1000;
              
                  switch ( NombredeJoueurs )
                  {
                      case 1:
              
                      srand ( time( NULL ) );
                      NombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                      printf ( "Tu dois trouve un nombre entre 0 ET 1000\n" );
              
                      do
                      {
                          printf ( "Quel est le nombre?\n" );
                          scanf ( "%d",&nombrechoisi );
              
                          if ( NombreMystere == nombrechoisi )
                          {
                              printf ( "Tu as trouve en %d coups", coups );
                          }
                           else if ( nombrechoisi > 1000 )
                          {
                              printf( "J'ai dit entre 0 ET 1000\n " );
                          }
                          else if ( NombreMystere < nombrechoisi )
                          {
              
                              ( coups++ );
                              printf ( "C'est moins\n" );
                          }
                          else if ( NombreMystere > nombrechoisi )
                          {
                              ( coups++ );
                              printf ( "C'est plus \n" );
                          }
              
              
              
                      }
                      while ( NombreMystere != nombrechoisi );
                      break;
              
                      case 2:
              
                      printf ( " Un des joueurs choisi un nombre entre 0 et 1000 sans que l'autre le vois\n" );
              
                      do
              
              {
              
                       scanf ( "%d", &NombreMystere );
              
                       if ( NombreMystere > 1000 )
                       {
                          printf ( " TU SAIS PAS LIRE OU QUOI ENTRE 0 ET 1000!!!\n ");
                       }
              }
                       while( NombreMystere > 1000 );
              
                       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\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
              printf( " Le deuxieme joueurs doit maintenant trouver le nombre qui est entre 0 ET 1000\n\n " );
              
              
                          printf ( "Quel est le nombre?\n" );
              
                          do
                          {
              
                          scanf ( "%d",&nombrechoisi );
              
                          if ( NombreMystere == nombrechoisi )
                          {
                              printf ( "Tu as trouve en %d coups", coups );
                          }
                           else if ( nombrechoisi > 1000 || nombrechoisi < 1 )
                          {
                              printf( "J'ai dit entre 0 ET 1000\n " );
                          }
                          else if ( NombreMystere < nombrechoisi )
                          {
              
                              ( coups++ );
                              printf ( "C'est moins\n" );
                          }
                          else if ( NombreMystere > nombrechoisi )
                          {
                              ( coups++ );
                              printf ( "C'est plus \n" );
                          }
                          }
                          while (nombrechoisi != NombreMystere);
                      break;
              
              }
               }
              
                      while ( NombreMystere != nombrechoisi );
              
                  break;
              
                  case 3 :
              
                   printf ( "\nChoisissez le nombre de joueur\n\n" );
                  printf ( "1 JOUEURS\n2 JOUEURS\n" );
              
              
                  do
                  {
              
               scanf( "%d" , &NombredeJoueurs );
              
                  if( NombredeJoueurs < 1 || NombredeJoueurs > 2 )
              
                  {
                      printf("\nNombre incorrect\nVeuillez reessayer\n");
              
                  }
                  }
              
                  while ( NombredeJoueurs != 2 && NombredeJoueurs != 1);
              
                  do
                  {
              
                  MAX = 10000;
              
                  switch ( NombredeJoueurs )
                  {
                      case 1:
              
                      srand ( time( NULL ) );
                      NombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                      printf ( "Tu dois trouve un nombre entre 0 ET 10000\n" );
              
                      do
                      {
                          printf ( "Quel est le nombre?\n" );
                          scanf ( "%d",&nombrechoisi );
              
                          if ( NombreMystere == nombrechoisi )
                          {
                              printf ( "Tu as trouve en %d coups", coups );
                          }
                           else if ( nombrechoisi > 10000 )
                          {
                              printf( "J'ai dit entre 0 ET 10000\n " );
                          }
                          else if ( NombreMystere < nombrechoisi )
                          {
              
                              ( coups++ );
                              printf ( "C'est moins\n" );
                          }
                          else if ( NombreMystere > nombrechoisi )
                          {
                              ( coups++ );
                              printf ( "C'est plus \n" );
                          }
              
              
              
                      }
                      while ( NombreMystere != nombrechoisi );
                      break;
              
                      case 2:
              
                      printf ( " Un des joueurs choisi un nombre entre 0 et 10000 sans que l'autre le vois\n" );
              
                      do
              
              {
              
                       scanf ( "%d", &NombreMystere );
              
                       if ( NombreMystere > 10000 )
                       {
                          printf ( " TU SAIS PAS LIRE OU QUOI ENTRE 0 ET 10000!!!\n ");
                       }
              }
                       while( NombreMystere > 10000 );
              
                       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\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
              printf( " Le deuxieme joueurs doit maintenant trouver le nombre qui est entre 0 ET 10000\n\n " );
              
              
                          printf ( "Quel est le nombre?\n" );
              
                          do
                          {
              
                          scanf ( "%d",&nombrechoisi );
              
                          if ( NombreMystere == nombrechoisi )
                          {
                              printf ( "Tu as trouve en %d coups", coups );
                          }
                           else if ( nombrechoisi > 10000 || nombrechoisi < 1 )
                          {
                              printf( "J'ai dit entre 0 ET 10000\n " );
                          }
                          else if ( NombreMystere < nombrechoisi )
                          {
              
                              ( coups++ );
                              printf ( "C'est moins\n" );
                          }
                          else if ( NombreMystere > nombrechoisi )
                          {
                              ( coups++ );
                              printf ( "C'est plus \n" );
                          }
                          }
                          while (nombrechoisi != NombreMystere);
                      break;
              
              }
               }
              
                      while ( NombreMystere != nombrechoisi );
              
                  break;
              
                   case 4 :
              
                   printf ( "\nChoisissez le nombre de joueur\n\n" );
                  printf ( "1 JOUEURS\n2 JOUEURS\n" );
              
              
                  do
                  {
              
               scanf( "%d" , &NombredeJoueurs );
              
                  if( NombredeJoueurs < 1 || NombredeJoueurs > 2 )
              
                  {
                      printf("\nNombre incorrect\nVeuillez reessayer\n");
              
                  }
                  }
              
                  while ( NombredeJoueurs != 2 && NombredeJoueurs != 1);
              
                  do
                  {
              
                  MAX = 100000;
              
                  switch ( NombredeJoueurs )
                  {
                      case 1:
              
                      srand ( time( NULL ) );
                      NombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                      printf ( "Tu dois trouve un nombre entre 0 ET 100000\n" );
              
                      do
                      {
                          printf ( "Quel est le nombre?\n" );
                          scanf ( "%d",&nombrechoisi );
              
                          if ( NombreMystere == nombrechoisi )
                          {
                              printf ( "Tu as trouve en %d coups", coups );
                          }
                           else if ( nombrechoisi > 100000 )
                          {
                              printf( "J'ai dit entre 0 ET 100000\n " );
                          }
                          else if ( NombreMystere < nombrechoisi )
                          {
              
                              ( coups++ );
                              printf ( "C'est moins\n" );
                          }
                          else if ( NombreMystere > nombrechoisi )
                          {
                              ( coups++ );
                              printf ( "C'est plus \n" );
                          }
              
              
              
                      }
                      while ( NombreMystere != nombrechoisi );
                      break;
              
                      case 2:
              
                      printf ( " Un des joueurs choisi un nombre entre 0 et 100000 sans que l'autre le vois\n" );
              
                      do
              
              {
              
                       scanf ( "%d", &NombreMystere );
              
                       if ( NombreMystere > 100000 )
                       {
                          printf ( " TU SAIS PAS LIRE OU QUOI ENTRE 0 ET 100000!!!\n ");
                       }
              }
                       while( NombreMystere > 100000 );
              
                       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\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
              printf( " Le deuxieme joueurs doit maintenant trouver le nombre qui est entre 0 ET 100000\n\n " );
              
              
                          printf ( "Quel est le nombre?\n" );
              
                          do
                          {
              
                          scanf ( "%d",&nombrechoisi );
              
                          if ( NombreMystere == nombrechoisi )
                          {
                              printf ( "Tu as trouve en %d coups", coups );
                          }
                           else if ( nombrechoisi > 100000 || nombrechoisi < 1 )
                          {
                              printf( "J'ai dit entre 0 ET 100000\n " );
                          }
                          else if ( NombreMystere < nombrechoisi )
                          {
              
                              ( coups++ );
                              printf ( "C'est moins\n" );
                          }
                          else if ( NombreMystere > nombrechoisi )
                          {
                              ( coups++ );
                              printf ( "C'est plus \n" );
                          }
                          }
                          while (nombrechoisi != NombreMystere);
                      break;
                      default:
                          printf("Niveau incorrect\nVeuillez reessayer\n\n");
                          return 0;
              
              
              }
               }
              
                      while ( NombreMystere != nombrechoisi );
              
               }
              
              
              
                  printf ( "\n\nVoulez vous faire une autre partie ?\n" );
                  printf ( "Si oui tapez 1\nSi non tapez 0\n" );
                  scanf ( "%d", &Recommencer );
              
                  }
                  while ( Recommencer = 1  );
              
                  return 0;
              }
              
              
              • Partager sur Facebook
              • Partager sur Twitter
                16 novembre 2018 à 17:29:31

                À quelle(s) ligne(s) ça se passe ? La 433 ?

                Quand un nombre aléatoire est choisi, c'est entre 0 et RAND_MAX, une constante qui dépend du compilateur, du système d'exploitation, etc. Récemment il y avait eu un problème similaire parce que RAND_MAX ne faisait que 32767. Même si on voulait un nombre entre 1 et 100.000, le programme ne pouvait pas aller plus haut que 32767.

                Bref : tu devrais afficher RAND_MAX. S'il vaut 32767, on saura pourquoi tu ne peux pas avoir de grands nombres.

                (Si c'est bien ça le problème, une solution pourrait être de faire rand()+rand()+rand() : ça donnera un nombre entre 0 et 98301, c'est déjà mieux.)

                -
                Edité par robun 16 novembre 2018 à 17:37:00

                • Partager sur Facebook
                • Partager sur Twitter
                  16 novembre 2018 à 17:44:11

                  Effectivement RAND_MAX est bien bloqué 32767, mais quel est la cause de ce problème?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 novembre 2018 à 19:09:00

                    Je ne sais pas pourquoi certains compilateurs ont RAND_MAX = 32767. Peut-être une raison historique : les premiers générateurs de nombre aléatoire devaient fonctionner sur des ordinateurs ayant peu de mémoire, donc on a développé un algorithme de génération de nombre aléatoire fonctionnant sur des entiers de 2 octets (32767, c'est la limite des entiers signés de 2 octets), et peut-être que certains compilateurs modernes ont conservé cet algorithme ? C'est juste une hypothèse.

                    Ce qui est sût, c'est qu'on n'a pas tous la même valeur. J'utilise GNU C, j'ai RAND_MAX = 2 milliards et quelques, la valeur maximale des entiers signés de 4 octets. Tu utilises aussi GNU C ? (Mais je crois que ça dépend aussi du système d'exploitation et peut-être aussi du type de machine : 32 ou 64 bits.)

                    -
                    Edité par robun 16 novembre 2018 à 19:11:10

                    • Partager sur Facebook
                    • Partager sur Twitter
                      16 novembre 2018 à 20:49:32

                      Non , moi j'utilise Code blocks et moi j'ai 64 bits
                      • Partager sur Facebook
                      • Partager sur Twitter
                        16 novembre 2018 à 23:00:28

                        Chemsse a écrit:

                        Non , moi j'utilise Code blocks et moi j'ai 64 bits


                        Il ne faut pas confondre IDE et compilateur / linker. CB est incapable de compiler un code (quelque soit le langage) et de fournir un exécutable. CB fait appel à une chaine externe de création d'exécutable, comme gcc par exemple.

                        Et gcc, lui, est incapable de gérer l'édition de ton code source.

                        • Partager sur Facebook
                        • Partager sur Twitter

                        On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                          16 novembre 2018 à 23:11:32

                          Chemsse a écrit:

                          Non , moi j'utilise Code blocks et moi j'ai 64 bits


                          Je ne crois pas que ce problème ait un rapport avec l'IDE, pour la raison indiquée par edgarjacobs (un IDE ne compile pas).

                          Tu as un ordinateur 64 bits, probablement un système d'exploitation 64 bits, mais ce n'est pas pour autant que le compilateur est en 64 bits. Quand j'utilisais Windows 7 sur un ordinateur 64 bits, c'était bien la version de Windows en 64 bits, pourtant la grande majorité des programmes étaient des versions 32 bits y compris GNU C (ainsi les pointeurs faisaient 4 octets, pas 8). Depuis, plusieurs années se sont écoulés et Windows en est au n°10, donc j'imagine que presque tous les programmes tournent en 64 bits, mais c'est pour dire que ça ne prouve rien...

                          -
                          Edité par robun 16 novembre 2018 à 23:14:49

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Problème au niveau de la sélection du nombre

                          × 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