bonjour à tous,
je suis arrivé au premier TP du cours de C avec le petit jeu du nombre mystère, et j'y suis arrivé sans trop de problêmes...tout content que j'étais, je me suis dit que j'allais lui apporter tout plein de modifications comme indiqué à la fin du TP, ce que j'ai fait!
j'ai donc ajouté un compteur...ça pas de problêmes...
mais lorsque j'ai voulu ajouter un menu pour régler la difficultée...alors ça grosse galère!!
j'ai mit 3 niveau de difficultées:
1er niveau: le code génère un nombre entre 1 et 10.
2eme niveau: entre 1 et 100
et 3eme niveau: entre 1 et 1000
j'ai donc fait 3 variables:
MAX 1, MAX 2, et MAX 3 que je modifie dans le code lorsque je demande de générer le nombre aléatoire...
mais le problême est que quoi que j'entre comme niveau (1, 2, ou 3), le nombre généré est toujours compris entre 1 et 10 quelque soit la variable que je déclare dans le code pour le générer!!
voici donc mon code:
//déclaration des variables const long MIN = 1, MAX1 = 10, MAX2 = 100, MAX3 = 1000;
long NombreMystere = 0, Essai = 0, Compteur = 1, Niveau = 0</couleur>;
//titre du jeu<couleur nom="rouge"/>
printf (" ~~~~ LE NOMBRE MYSTERE ~~~~\n\n\n");
//menu de difficultée
printf ("- [1] : nombre de 1 a 10\n");
printf ("- [2] : nombre de 1 a 100\n");
printf ("- [3] : nombre de 1 a 1000\n");
printf ("choisissez un niveau de difficulte: ");
scanf ("%ld", &Niveau);
printf ("\n");
//recherche du nombre mystere
//niveau 1 if (Niveau = 1)
{
srand(time(NULL));
NombreMystere = (rand( ) % (MAX1 - MIN + 1)) + MIN;
while (Essai != NombreMystere)
{
printf (" ==Coup %ld==\n", Compteur);
printf ("Quel est le nombre ? ");
scanf ("%ld", &Essai);
Compteur++;
if (Essai < NombreMystere)
{
printf ("C'est plus!\n\n");
}
else if (Essai > NombreMystere)
{
printf ("C'est moins!\n\n");
}
else
{
printf ("Bravo, vous avez trouve le nombre mystere en %ld coups!!!\n\n", Compteur-1);
}
}
}
//niveau 2 if (Niveau = 2)
{
srand(time(NULL));
NombreMystere = (rand( ) % (MAX2 - MIN + 1)) + MIN;
while (Essai != NombreMystere)
{
printf (" ==Coup %ld==\n", Compteur);
printf ("Quel est le nombre ? ");
scanf ("%ld", &Essai);
Compteur++;
if (Essai < NombreMystere)
{
printf ("C'est plus!\n\n");
}
else if (Essai > NombreMystere)
{
printf ("C'est moins!\n\n");
}
else
{
printf ("Bravo, vous avez trouve le nombre mystere en %ld coups!!!\n\n", Compteur-1);
}
}
}
//niveau 3 if (Niveau = 3)
{
srand(time(NULL));
NombreMystere = (rand( ) % (MAX3 - MIN + 1)) + MIN;
while (Essai != NombreMystere)
{
printf (" ==Coup %ld==\n", Compteur);
printf ("Quel est le nombre ? ");
scanf ("%ld", &Essai);
Compteur++;
if (Essai < NombreMystere)
{
printf ("C'est plus!\n\n");
}
else if (Essai > NombreMystere)
{
printf ("C'est moins!\n\n");
}
else
{
printf ("Bravo, vous avez trouve le nombre mystere en %ld coups!!!\n\n", Compteur-1);
}
}
}
else
{
printf (3veuillez entrer un nombre entre 1 et 3!!\n3<couleur nom="rouge">);
}
system("PAUSE");
return0;
}
voilà donc...ça fait des heures que je me torture l'esprit à tenter de comprende ce qui ne va pas...
je sais que mon code ne doit pas être vraiment parfait...mais j'ai débuté il y a 3 jours seulement^^
merci donc à l'avance, et aussi d'épargner ma boite de doliprane!!
j'ai tenté mais ça ne fonctionne pas non plus...
je déclare une seule variable au départ que je change pour chaque niveau...mais ça change rien...
de plus, je viens de me rendre compte que si je tappe un chiffre au delà de 3 dans le choix du niveau, il me demande quand même d'écrire un nombre!!
qui bien entendu se situe entre 1 et 10!!
Tout à fait à part, tu t'es un peu fait chier pour rien. C'est bien d'avoir essayé de colorer le code à la main, mais on a codé des scripts qui le font automatiquement à la place, ça va plus vite
N'utilise pas la balise < citation> mais plutôt la balise < code> à la place. Tu verras, c'est mieux
MAX 1, MAX 2, et MAX 3 que je modifie dans le code lorsque je demande de générer le nombre aléatoire...
mais le problême est que quoi que j'entre comme niveau (1, 2, ou 3), le nombre généré est toujours compris entre 1 et 10 quelque soit la variable que je déclare dans le code pour le générer!!
voici donc mon code:
merci M@teo21 pour ces indications!!
je me disais aussi que tous les membres du forum avaient une patience infinie pour colorer leur code à chaque fois aussi!!
j'en profite au passage pour te remercier pour ces cours si bien faits qui me permettent d'avancer si vite...parce que avec mon bouquin du C, j'avais un peu plus de mal à rester accroché^^
en ce qui concerne les conditions, bah je n'ai mit qu'un seul "="...
je pense que l'erreur ne vient pas le là donc...
Edite: oui -ed-...j'ai du zapper la partie où on parlait de la coloration...pourtant j'ai lu les règles...ce qui est encore pire..
par contre je ne savais pas qu'on ne devait appeler qu'une seule fois srand()!!
je vais donc modifier le code pour arranger ça!!
merci beaucoup!!
je vais me décider à mettre mes lunettes...ça peux plus durer...
merci beaucoup Timon!!
Edit: bon...j'ai changé tout ça...et nouveau problême!!
maintenant le programme bug et me renvoie une erreur de windows dés que je code arrive au moment de générer le chiffre aléatoire!!
voici mon code qui pourtant m'a l'air à peu prêt bon:
//titre du jeu printf(" ~~~~ LE NOMBRE MYSTERE ~~~~\n\n\n");
//menu de difficultée printf("- [1] : nombre de 1 a 10\n"); printf("- [2] : nombre de 1 a 100\n"); printf("- [3] : nombre de 1 a 1000\n"); printf("choisissez un niveau de difficulte: ");
scanf ("%ld", &Niveau); printf("\n");
//recherche du nombre mystere //niveau 1 if(Niveau == 1) {
MAX = 10; while(Essai != NombreMystere) { printf(" ==Coup %ld==\n", Compteur); printf("Quel est le nombre ? ");
scanf ("%ld", &Essai);
Compteur++; if(Essai < NombreMystere) { printf("C'est plus!\n\n"); } elseif(Essai > NombreMystere) { printf("C'est moins!\n\n"); } else { printf("Bravo, vous avez trouve le nombre mystere en %ld coups!!!\n\n", Compteur-1); } } }
//niveau 2 elseif(Niveau == 2) {
MAX = 100; while(Essai != NombreMystere) { printf(" ==Coup %ld==\n", Compteur); printf("Quel est le nombre ? ");
scanf ("%ld", &Essai);
Compteur++; if(Essai < NombreMystere) { printf("C'est plus!\n\n"); } elseif(Essai > NombreMystere) { printf("C'est moins!\n\n"); } else { printf("Bravo, vous avez trouve le nombre mystere en %ld coups!!!\n\n", Compteur-1); } } }
//niveau 3 elseif(Niveau == 3) {
MAX = 1000; while(Essai != NombreMystere) { printf(" ==Coup %ld==\n", Compteur); printf("Quel est le nombre ? ");
scanf ("%ld", &Essai);
Compteur++; if(Essai < NombreMystere) { printf("C'est plus!\n\n"); } elseif(Essai > NombreMystere) { printf("C'est moins!\n\n"); } else { printf("Bravo, vous avez trouve le nombre mystere en %ld coups!!!\n\n", Compteur-1); } } }
else { printf("veuillez entrer un nombre entre 1 et 3!!\n"); }
system("PAUSE"); return0; }
EDIT 2: je viens de m'appercevoir que "MAX" ne pouvait pas être déclaré à "0" au départ...
j'ai donc changé le "0" en "10" mais le problême initial reste...le nombre génré se trouvr toujours compris entre 1 et 10 quelque soit le niveau...
le prog ragit comme si j'avais indiqué "const long MAX = 1;" au lieu de "long" tout court...
//déclaration des variables constlong MIN = 1; long MAX = 10; long NombreMystere = 0, Essai = 0, Compteur = 1, Niveau = 0;
//génération aléatoire
//titre du jeu printf(" ~~~~ LE NOMBRE MYSTERE ~~~~\n\n\n");
//menu de difficultée printf("- [1] : nombre de 1 a 10\n"); printf("- [2] : nombre de 1 a 100\n"); printf("- [3] : nombre de 1 a 1000\n"); printf("choisissez un niveau de difficulte: ");
scanf ("%ld", &Niveau); printf("\n");
//recherche du nombre mystere //niveau 1 if(Niveau == 1) {
MAX = 10;
srand(time(NULL));
NombreMystere = (rand() % (MAX - MIN + 1)) + MIN; while(Essai != NombreMystere) { printf(" ==Coup %ld==\n", Compteur); printf("Quel est le nombre ? ");
scanf ("%ld", &Essai);
Compteur++; if(Essai < NombreMystere) { printf("C'est plus!\n\n"); } elseif(Essai > NombreMystere) { printf("C'est moins!\n\n"); } else { printf("Bravo, vous avez trouve le nombre mystere en %ld coups!!!\n\n", Compteur-1); } } }
//niveau 2 elseif(Niveau == 2) {
MAX = 100;
srand(time(NULL));
NombreMystere = (rand() % (MAX - MIN + 1)) + MIN; while(Essai != NombreMystere) { printf(" ==Coup %ld==\n", Compteur); printf("Quel est le nombre ? ");
scanf ("%ld", &Essai);
Compteur++;
MAX = 100; if(Essai < NombreMystere) { printf("C'est plus!\n\n"); } elseif(Essai > NombreMystere) { printf("C'est moins!\n\n"); } else { printf("Bravo, vous avez trouve le nombre mystere en %ld coups!!!\n\n", Compteur-1); } } }
//niveau 3 elseif(Niveau == 3) {
MAX = 1000;
srand(time(NULL));
NombreMystere = (rand() % (MAX - MIN + 1)) + MIN; while(Essai != NombreMystere) { printf(" ==Coup %ld==\n", Compteur); printf("Quel est le nombre ? ");
scanf ("%ld", &Essai);
Compteur++;
MAX = 1000; if(Essai < NombreMystere) { printf("C'est plus!\n\n"); } elseif(Essai > NombreMystere) { printf("C'est moins!\n\n"); } else { printf("Bravo, vous avez trouve le nombre mystere en %ld coups!!!\n\n", Compteur-1); } } }
else { printf("veuillez entrer un nombre entre 1 et 3!!\n"); }
system("PAUSE"); return0; }
génération aléatoire
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
If you'd like to join us, read "How do we work at OpenClassrooms"! :)