Boucle qui ne marche pas (langage C)

Résolu/Fermé
Djee - 24 août 2010 à 20:07
 Djee - 25 août 2010 à 16:40
Bonjour,

J'essaye de faire un jeu "plus ou moins" en suivant le tuto du site de zéro, mais en essayant de l'améliorer, je tombe sur un problème : quoique je fasse, je n'arrive pas à faire une boucle correct pour revenir au début, le jeu "plante".

Pourriez vous m'aider ?

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


int main ( int argc, char** argv )

{
    
srand(time(NULL));
const int MAX = 100, MIN = 1;
int nombreEntrer = 0, rejouer = 1, compteur = 0;
int nombreMystere = 0, nombreDePartie = 0;

{
    
for ( nombreMystere = 0 ; rejouer != 0 ; nombreDePartie++) 

{

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

for ( compteur = 0 ; nombreEntrer != nombreMystere && rejouer != 2 ; compteur++)

{

    printf("Quel est le nombre mystere ? ");
    scanf("%d", &nombreEntrer);

    if (nombreEntrer < nombreMystere && nombreEntrer != 0)
    printf("\nTu es en dessous.\n\n");
    else if (nombreEntrer > nombreMystere && nombreEntrer != 0)
    printf ("\nTu es au dessus.\n\n");
    else if (nombreEntrer == 0)
    {printf("\nTu nous quittes ? Je suis triste. ='( Valides tu, en tapant 0, ton choix ? ");
     scanf("%d", rejouer);}
    else
    printf("\n\nBravo ! tu as reussi, le nombre est bien %d ! Tu as reussi en %d coups.\n\n", nombreMystere, compteur);

}

printf("Veux tu refaire une partie ? 1 pour oui, 0 pour non.");
scanf("%d%", rejouer);

}
printf ("Dommage. Reviens Vite ! ");



}
}




Merci d'avance.

2 réponses

mic170 Messages postés 6 Date d'inscription mardi 24 août 2010 Statut Membre Dernière intervention 26 août 2010
24 août 2010 à 21:51
dans ta boucle
for ( compteur = 0 ; nombreEntrer != nombreMystere && rejouer != 2 ; compteur++)

change ton 2 en 0
sinon
ton printf("\nTu nous quittes ? Je suis triste. ='( Valides tu, en tapant 0, ton choix ? ");
n'aura pas de sens puisque tu veux quitter si tu tapes 0 et normalement c'est bon
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
24 août 2010 à 23:22
Bonjour,
En plus du problème de cohérence susmentionné, je rajouterai :
scanf("%d", rejouer);
Ton compilateur a ou aurait dû crier. Le deuxième argument doit être une adresse. Tu aurais donc dû mettre : scanf("%d",&rejouer);

Cdlt,
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
25 août 2010 à 01:13
Ton compilateur a ou aurait dû crier
Oui, à condition qu'il eût précisé '-Wall' et qu'il eût lu le rapport de compilation et qu'il eût tenu compte du warning indiqué... ah que de conditions !
Bonne soirée à toi.
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
25 août 2010 à 14:15
en effet, c'était un beau plantage à l'execution qui s'annoncait. Sous windows 98, ca aurai pu être un écran bleu ;)
0
Effectivement, c'est le "&" manquant qui faisait planter le jeu. J'ai utilisé deux IDE différents (code::blocks et Dev-C++) pourtant, et aucun message ni d'erreur ni de warning.

Merci de votre aide, je vais pouvoir continuer à l'améliorer maintenant.
0