Beug sur mon programme.

Fermé
rinraven - 1 mars 2013 à 19:35
 rinraven - 6 mars 2013 à 10:50
Bonjour,

J'ai cree un programme "jeu" ou il faut trouver un nombre mystere quand je le compile il ne m'affiche aucune erreur et quand je le test parfois il marche tres bien et parfois il me met:
ex:tapez le nombre mystere:60
c'est plus!
tapez le nombre mystere:61
c'est moins

Vu que je suis en train d'apprendre je n'est pas trouvez l'erreur.voici mon code:

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

int main()
{
int nombreSaisie=0;
int nombreMystere=0;
const MAX=100;
const MIN=0;

srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

printf("Trouvez le nombre mystere qui ce situe entre 0 et 100!\n\n");
printf("Tapez le nombre mystere");
scanf("%d",&nombreSaisie);

while (nombreSaisie != nombreMystere)
{
if (nombreSaisie < nombreMystere);
{
printf("C'est plus!\n\n");
printf("Tapez le nombre mystere");
scanf("%d",&nombreSaisie);
}

if(nombreSaisie>nombreMystere)
{
printf("C'est moins!\n\n");
printf("Tapez le nombre mystere");
scanf("%d",&nombreSaisie);
}

}

printf("Bravo vous avez trouvez le nombre mystere!!\n Le nombre mystere est %d\n",nombreMystere);
return 0;
}

merci d'avance

2 réponses

Utilisateur anonyme
1 mars 2013 à 20:35
Le fait d'avoir plusieurs fois l'affichage : "saisir ..." et avoir plusieurs scanf n'est pas très "propre". L'utilisation d'une structure do...while me semble mieux dans ce cas.

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

#define MAX 100
#define MIN 0

int main() {
  int nbMystere, nbSaisie = 0;
  srand(time(NULL));
  nbMystere = (rand() % (MAX - MIN + 1)) + MIN;
  printf("Trouvez le nombre mystere qui se situe entre %d et %d\n", MIN, MAX);
  do {
    printf("Nombre mystere : ");
    scanf("%d", &nbSaisie);
    if (nbSaisie < nbMystere) {
      printf("C'est plus !\n");
    }
    else if (nbSaisie > nbMystere) {
      printf("C'est moins !\n");
    }
  } while (nbSaisie != nbMystere);
  printf("Bravo ! Vous avez trouvez le nombre mystere (%d) !\n", nbMystere);
  return 0;
}

1
C'est vrai que c'est beaucoup plus logique mais pourquoi le programme ne marcher pas bien(le premier) et merci de m'avoir repondu :)
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
2 mars 2013 à 14:18
quand je le compile il ne m'affiche aucune erreur
Aucune erreur mais je vois 3 lignes où il aurait dû émettre un warning.

const MIN = 0; => const int MIN = 0;
const MAX = 100; => const int MAX = 100;

Et la plus vilaine :
if (nombreSaisie < nombreMystere);
Pas de point virgule enfin du if, sinon cela annihile la condition.
Du coup, le bloc d'instructions suivant sera exécuté systématiquement.

Cdlt,
1
merci!
0