Mon code

Fermé
meryem - 26 oct. 2012 à 17:46
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 26 oct. 2012 à 21:46
Bonjour,

j'ai commencer a faire un programme nommé 'nombre mystère' qui demande un nombre aléatoire compris entre 1 et 100 et qui compte le nombre des coups faits pour trouver ce nombre mystère, puis j'ai demandé a la fin si l'utilisateur veut recommencer le jeu , en répondant par 'o' ou 'n' (oui ou non) a part s'il tape autre caractère que 'o' et 'n' on lui redemande s'il veut recommencer le jeu ..le problème que j'ai rencontré c 'est que quand je demande à l'utilisateur s'il veut recommencer et qu'il ne tape ni 'o' ni 'n' , le message "voulez-vous recommencer le jeu" s'affiche plusieurs fois et sans arrêt...voilà donc mon code si quelqu'un connait par hasard l'erreur ou la solution de ce problème .



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

int main()
{
const int MAX = 100, MIN = 1 ;
int nombreMystere=0 , nombreAecrire=0, comp=0;
char rep= ' ' ;


srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
do
{
do
{
printf ("Saisir un Nombre Aleatoir \n");
scanf("%d", &nombreAecrire);
comp++;

if (nombreAecrire < nombreMystere)
printf(" c'est +++++ \n");
else if (nombreAecrire > nombreMystere)
printf (" c'est ----- \n");
else

printf("Bravoo vous avez trouvé le nombre mystere en %d",comp,"COUPS!!");
}

while(nombreAecrire != nombreMystere);
while ( rep !='n' && rep!='o')
{
printf ("voulez-vous recommencer le jeu???");
scanf(&rep);

}



}
while ( rep =='o');

System("pause);
}





j'espère que mon explication est bien claire ...... Merci

A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
26 oct. 2012 à 18:30
Quelques fautes :
scanf(&rep); N'existe pas. Essaie plutôt : scanf("%c",&rep);
Ensuite, n'oublie pas de mettre getchar(), juste avant ton scanf("%c",&rep); et juste après.
Donc :
getchar();
scanf("%c",&rep);
getchar();

System("pause); T'as oublié un guillemet.

Et enfin tu as oublié return 0; à la fin.
1
ça a marché ^^ ... de ta part je peux savoir ce que fait ces deux Getchar(); avant et après scanf ...Merciiii!!!
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
26 oct. 2012 à 21:46
Lorsque tu appuies sur la touche entrée, il va se loger dans le buffer clavier.
Il faut donc l'enlever avant de tomber sur scanf("%c",...) sinon ta variable vaudra '\n' (touche entrée).
0