Probleme en language C

Résolu
Bonjour,

Voila , j'ai tapé ce code :

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

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

long nombreMystere = 0;
long choix3 = 0;
long conMAX;
long conMIN = 1;
long choix1 = 0;
long choix2;

printf("Bonjour ! Le but est de trouver le nombre mystere : c'est parti !\n");
printf("Genereation du nombre mystere ...\n");

do
{

printf("Choisissez un niveau :\n 1 - Facile ( entre 1 et 100 )\n 2 - Moyen ( entre 1 et 500 )\n 3 - Difficile ( entre 1 et 1000 )\n=== ");
scanf("%ld", &choix2);

if ( choix2 == 1 && choix2 !=3 && choix2 != 2 )
{
printf("Vous avez choisi le niveau 1\n");
conMAX = 100;

}

else if ( choix2 == 2 && choix2 != 3 && choix2 != 1 )
{
printf("Vous avez choisi le niveau 2\n");
conMAX = 500;

}

else if ( choix2 == 3 && choix2 != 1 && choix2 != 2 )
{
printf("Vous avez choisi le niveau 3\n");
conMAX = 1000;

}

do
{
{
printf("Veuillez choisir un nombre : ");
scanf("%ld" , &choix3);
}

srand(time(NULL));
nombreMystere = (rand() % (conMAX - conMIN + 1)) + conMIN;

if ( choix3 < nombreMystere )
printf("Le nombre mystere est plus grand que ca !!\n");
else
if ( choix3 > nombreMystere )
printf("Le nombre mystere est plus petit que ca !!\n");

else
printf("Bravo !!! Vous avez trouve le nombre mystere !!!\n");

}while ( choix3 != nombreMystere );

if ( choix3 == nombreMystere )
{
printf("Voulez-vous rejouer ???\n 1 - Oui\n 2 - Non\n");
scanf("%ld" ,&choix1);
}
else
printf("Veuillez entrer un nombre correct");
} while ( choix1 == 1);
return 0;
}

et je me demandais , le code en lui meme marche , mais si vous pretez attention aux resultats vous y verriez un probleme ...

A vous de voir ..

Merci d'avance ,
cordialement ,¨
Problemard
Configuration: Windows Vista
Safari 528.16

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. À quoi ça sert de dire if ( choix2 == 1 && choix2 !=3 && choix2 != 2 ) ?

    Si choix2==1, il est forcement différent de 2 et de 3.

    Là, c'est pareil :
    }while ( choix3 != nombreMystere );

    if ( choix3 == nombreMystere )
    {

    choix3 est forcement égal à nombreMystere.

    1. Contributeur
      Salut,
      En effet, beaucoup de redondance dans les conditions.
      En plus ton srand(time(NULL)) ainsi que le calcul de "nombreMystere" sont définis dans ta boucle do-while, donc exécutés à chaque itération.

      Voici ton programme corrigé :

      #include <stdio.h>
      #include <stdlib.h>
      #include <time.h>
      
      int main(void)
      {
      
          long nombreMystere = 0;
          long choix3 = 0;
          long conMAX;
          long conMIN = 1;
          long choix1 = 0;
          long choix2;
      
          printf("Bonjour ! Le but est de trouver le nombre mystere : c'est parti !\n");
          printf("Genereation du nombre mystere ...\n");
      
          do
          {
              printf("Choisissez un niveau :\n 1 - Facile ( entre 1 et 100 )\n 2 - Moyen ( entre 1 et 500 )\n 3 - Difficile ( entre 1 et 1000 )\n=== ");
              scanf("%ld", &choix2);
              switch(choix2) {
                  case 1:
                      printf("Vous avez choisi le niveau 1\n");
                      conMAX = 100;
                      break;
                  case 2:
                      printf("Vous avez choisi le niveau 2\n");
                      conMAX = 500;
                      break;
      
                  case 3:
                      printf("Vous avez choisi le niveau 3\n");
                      conMAX = 1000;
                      break;
              }
      
              srand(time(NULL));
              nombreMystere = (rand() % (conMAX - conMIN + 1)) + conMIN;
      
              do
              {
                  printf("Veuillez choisir un nombre : ");
                  scanf("%ld" , &choix3);
      
                  if (choix3 < nombreMystere)
                      printf("Le nombre mystere est plus grand que ca !!\n");
                  else if (choix3 > nombreMystere)
                      printf("Le nombre mystere est plus petit que ca !!\n");
                  else
                      printf("Bravo !!! Vous avez trouve le nombre mystere !!!\n");
              }while (choix3 != nombreMystere);
      
              do {
                  printf("Voulez-vous rejouer ???\n 1 - Oui\n 2 - Non\n");
                  scanf("%ld" ,&choix1);
                  switch(choix1) {
                      case 1:
                          break;
                      case 2:
                          return 0;
                      default:
                          choix1=-1;
                          printf("Veuillez entrer un nombre correct\n");
                  }
              } while(choix1==-1);
      
          } while ( choix1 == 1);
      
          return 0;
      } 
      


      Cdlt
      1. Bonjour a toi ,
        Merci beaucoup je vien de comparer les deux codes et j'ai compris mes erreurs ^^

        ( pour les trucs la " && choix2 != 3 ... " je sais que ca ne sert a rien mais en fait si tu teste mon code tu comprendra pourquoi j'ai mis ca ^^ )

        Merci beaucoup ^^

        A plus ^^