Aide mini programme code blocks [Résolu/Fermé]

Signaler
Messages postés
3
Date d'inscription
mercredi 8 décembre 2010
Statut
Membre
Dernière intervention
11 décembre 2010
-
Messages postés
3
Date d'inscription
mercredi 8 décembre 2010
Statut
Membre
Dernière intervention
11 décembre 2010
-
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!

4 réponses

Messages postés
345
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
28 juillet 2012
61
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.
Messages postés
3
Date d'inscription
mercredi 8 décembre 2010
Statut
Membre
Dernière intervention
11 décembre 2010

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 :(
Messages postés
345
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
28 juillet 2012
61
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 ?
Messages postés
3
Date d'inscription
mercredi 8 décembre 2010
Statut
Membre
Dernière intervention
11 décembre 2010

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!