Aide mini programme code blocks

Résolu
aherod Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
aherod Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous!

Je me suis recemment mis à l'apprentissage du language C à l'aide du tuto de m@teo21 sur le site du zéro( https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c

J'en suit arrivé a un TP ou il faut deviner un nombre préalablement choisi par l'ordinateur or mon programme ne marche pas:
quand j'entre un nombre, l'ordinateur répond plusieurs fois "c'est moins !" puis "c'est plus !" jusqu'a que le programme plante!

J'ai cherché partout mais ne trouve pas de solution. Voici le programme:

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

int main ( int argc, char** argv )
{
int nombreMystere = 0, nombreEntre = 0;
const int MAX = 100, MIN = 1;

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

while (nombreMystere != nombreEntre)
{
printf("Quel est le nombre Mystere ?\n");
scanf("%d\n\n", &nombreEntre);

if (nombreMystere < nombreEntre)
{
printf("C'est moins !\n");
}
else if (nombreMystere > nombreEntre)
{
printf("C'est plus !\n");
}
else
{
printf("Bravo, vous avez trouvé le nombre mystere!\n\n");
}
}
return 0;
}








Merci de votre aide!
A voir également:

4 réponses

lucieb31 Messages postés 345 Date d'inscription   Statut Membre Dernière intervention   62
 
Deja tu n'a pas besoin du troisième else, en effet lorsque le nombre que tu aura entré sera egal au nombre mystere alors il sortira de la boucle donc printf("Bravo, vous avez trouvé le nombre mystere!\n\n"); peut etre mis avant le return 0. Ensuite au lieu de faire const int MAX = 100, MIN = 1; tu peut ecrire #define MAX 100 et #define MIN 1 juste en dessous de tes include, ça permet de definir des constantes.
Affiche ton nombre mystere et vois ce que ça fait quand tu le trouve.
0
aherod Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Salut,

J'ai mis ce que tu m'as dis et cela donne maintenant:


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 100
#define MIN 1

int main ( int argc, char** argv )
{
int nombreMystere = 0, nombreEntre = 0;

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

while (nombreMystere != nombreEntre)
{
printf("Quel est le nombre Mystere ?\n");
scanf("%d\n\n", &nombreEntre);

if (nombreMystere < nombreEntre)
{
printf("C'est moins !\n");
}
else if (nombreMystere > nombreEntre)
{
printf("C'est plus !\n");
}
}
printf("Bravo, vous avez trouvé le nombre mystere!\n\n");

return 0;
}

Mais cela n'a rien changé et ca ne marche toujours pas :(
0
lucieb31 Messages postés 345 Date d'inscription   Statut Membre Dernière intervention   62
 
enlève les \n dans ton scanf. T'a essayé de voir si en affichant le nombre mystère et en le trouvant dés le debut cela fonctionne ?
0
aherod Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Effectivement j'ai enlevé les \n dans le scanf et ca marche! Je ne comprend pas pourquoi...

Pour laisser les sauts de ligne j'ai créé un printf.

Merci beaucoup de ton aide!
0