Probleme avec un tit programme que je
Silver-Boy
Messages postés
28
Statut
Membre
-
Silver-Boy Messages postés 28 Statut Membre -
Silver-Boy Messages postés 28 Statut Membre -
Salut tout le monde, voila je suis débutant en programmation C, et je coince un peu pour crée un petit jeu lOol (plus ou moins).
Svp vous pouvais me dire ou j'ai gaffé
Probleme : Quand je compile et je lance le programme, ça va tout est nikel, mais quand je choisis le niveau (a savoir 1. 2 ou 3) la difficulté ne change pas (MAX 10. 100 ou 1000)
et aussi meme quand je tape 10 et sachant que la limite est 10 (dans le cas du premier niveau) il me dis C'est plus ?!!! SVP un tit aide ne serai pas de reffus ^^
Merci
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int nombreMystere, number = 0, compteur = 1, lVl, MIN = 1;
printf("\t\t\t\t===Menu===\n\n");
printf("\t\t\t1- Niveau 1 : de 1 a 100.\n\n");
printf("\t\t\t2- Niveau 2 : de 1 a 1000.\n\n");
printf("\t\t\t3- Niveau 3 : de 1 a 10000.\n\n");
scanf("%d", &lVl);
switch (lVl)
{
case 1:
do
{
int MAX = 10;
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
printf("Quel est le nombre Mystere ?\n");
scanf("%d", &number);
if (number < nombreMystere)
{
printf("C'est plus ^^\n");
}
else if (number > nombreMystere)
{
printf("C'est moins ^^\n");
}
else
{
printf("Bravo, vous l'avez trouver en %d coups ^^\n", compteur);
}
compteur++;
} while (number != nombreMystere);
break;
case 2:
do
{
int MAX = 100, MIN = 1;
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
printf("Quel est le nombre Mystere ?\n");
scanf("%d", &number);
if (number < nombreMystere)
{
printf("C'est plus ^^\n");
}
else if (number > nombreMystere)
{
printf("C'est moins ^^\n");
}
else
{
printf("Bravo, vous l'avez trouver en %d coups ^^\n", compteur);
}
compteur++;
} while(number != nombreMystere);
break;
case 3:
do
{
int MAX = 1000, MIN = 1;
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
printf("Quel est le nombre Mystere ?\n");
scanf("%d", &number);
if (number < nombreMystere)
{
printf("C'est plus ^^\n");
}
else if (number > nombreMystere)
{
printf("C'est moins ^^\n");
}
else
{
printf("Bravo, vous l'avez trouver en %d coups ^^\n", compteur);
}
compteur++;
} while(number != nombreMystere);
break;
default:
printf("veuillez choisir entre 1, 2 et 3.");
break;
}
return 0;
}
Svp vous pouvais me dire ou j'ai gaffé
Probleme : Quand je compile et je lance le programme, ça va tout est nikel, mais quand je choisis le niveau (a savoir 1. 2 ou 3) la difficulté ne change pas (MAX 10. 100 ou 1000)
et aussi meme quand je tape 10 et sachant que la limite est 10 (dans le cas du premier niveau) il me dis C'est plus ?!!! SVP un tit aide ne serai pas de reffus ^^
Merci
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int nombreMystere, number = 0, compteur = 1, lVl, MIN = 1;
printf("\t\t\t\t===Menu===\n\n");
printf("\t\t\t1- Niveau 1 : de 1 a 100.\n\n");
printf("\t\t\t2- Niveau 2 : de 1 a 1000.\n\n");
printf("\t\t\t3- Niveau 3 : de 1 a 10000.\n\n");
scanf("%d", &lVl);
switch (lVl)
{
case 1:
do
{
int MAX = 10;
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
printf("Quel est le nombre Mystere ?\n");
scanf("%d", &number);
if (number < nombreMystere)
{
printf("C'est plus ^^\n");
}
else if (number > nombreMystere)
{
printf("C'est moins ^^\n");
}
else
{
printf("Bravo, vous l'avez trouver en %d coups ^^\n", compteur);
}
compteur++;
} while (number != nombreMystere);
break;
case 2:
do
{
int MAX = 100, MIN = 1;
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
printf("Quel est le nombre Mystere ?\n");
scanf("%d", &number);
if (number < nombreMystere)
{
printf("C'est plus ^^\n");
}
else if (number > nombreMystere)
{
printf("C'est moins ^^\n");
}
else
{
printf("Bravo, vous l'avez trouver en %d coups ^^\n", compteur);
}
compteur++;
} while(number != nombreMystere);
break;
case 3:
do
{
int MAX = 1000, MIN = 1;
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
printf("Quel est le nombre Mystere ?\n");
scanf("%d", &number);
if (number < nombreMystere)
{
printf("C'est plus ^^\n");
}
else if (number > nombreMystere)
{
printf("C'est moins ^^\n");
}
else
{
printf("Bravo, vous l'avez trouver en %d coups ^^\n", compteur);
}
compteur++;
} while(number != nombreMystere);
break;
default:
printf("veuillez choisir entre 1, 2 et 3.");
break;
}
return 0;
}
A voir également:
- Probleme avec un tit programme que je
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Desinstaller un programme - Guide
- Programme word gratuit - Guide
- Forcer la fermeture d'un programme - Guide
3 réponses
Salut
Comment sais-tu que la difficulté ne change pas? je ne vois pas de trace spécifique dans l'un ou l'autre des niveaux de difficulté.
Ajoutes des traces pour savoir dans quelle niveau tu atteris
D'autre part, tu réinitialise ton NombreMystère a chaque tour de boucle while dans un niveau de difficulté. Est-ce le comportement recherché? car si tu indiques que "c'est plus" ou "c'est moins", c'est pour qu'on puisse se baser sur cette indication pour finir par trouver, non?
Enfin, tu peux factoriser une grosse partie de ton code puisque le comportement est exactement le meme dans chaque niveau de difficulté. la seule modification est dans l'initialisation du MAX.
Ton case ne devrait donc contenir que l'initialisation du MAX avec la valeur voulue.
D'autre part, comme indiqué au dessus, ton do...while ne devrait contenir que les essais et non pas l'initialisation de la graine avec srand ni celle du nombreMystère...
En gros ton code devrait plutot ressembler à quelquechose comme ca (en pseudo-code)
Apres s'il y a une erreur ca ne me saute pas aux yeux pour l'instant mais factorise ton code et on y verra peut etre plus clair.
Enfin, (par souci d'optimisation) le switch case que je t'ai indiqué peut se résumer a une puissance de 10, puisque ta variable MAX recoit en fait la valeur 10 puissance lVl... (level 2 par exemple : MAX = 10² = 100)
Comment sais-tu que la difficulté ne change pas? je ne vois pas de trace spécifique dans l'un ou l'autre des niveaux de difficulté.
Ajoutes des traces pour savoir dans quelle niveau tu atteris
D'autre part, tu réinitialise ton NombreMystère a chaque tour de boucle while dans un niveau de difficulté. Est-ce le comportement recherché? car si tu indiques que "c'est plus" ou "c'est moins", c'est pour qu'on puisse se baser sur cette indication pour finir par trouver, non?
Enfin, tu peux factoriser une grosse partie de ton code puisque le comportement est exactement le meme dans chaque niveau de difficulté. la seule modification est dans l'initialisation du MAX.
Ton case ne devrait donc contenir que l'initialisation du MAX avec la valeur voulue.
D'autre part, comme indiqué au dessus, ton do...while ne devrait contenir que les essais et non pas l'initialisation de la graine avec srand ni celle du nombreMystère...
En gros ton code devrait plutot ressembler à quelquechose comme ca (en pseudo-code)
printf menu...
...// les printf...
switch... {
case 1 :
MAX = 10;
break;
case 2 :
MAX = 100;
break
case 3 :
MAX = 1000;
break;
}
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
do {
...//ce qu'il reste
}
while...
Apres s'il y a une erreur ca ne me saute pas aux yeux pour l'instant mais factorise ton code et on y verra peut etre plus clair.
Enfin, (par souci d'optimisation) le switch case que je t'ai indiqué peut se résumer a une puissance de 10, puisque ta variable MAX recoit en fait la valeur 10 puissance lVl... (level 2 par exemple : MAX = 10² = 100)
Merci beaucoup, ça m'aide vraiment, je vais m'y mètre, et si j'ai du nouveau je posterai :p.
Thank's ^_^
Thank's ^_^
Bon voila j'ai esséyé, et ça a marché, merci beaucoup.
Si tu veux la vérité j'ai eclaté de rire quand j'ai vu les fautes, mais bon je débute, et je crois que j'ai bien droit a ça :p.
Bref voila ce que ça donne :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int nombreMystere, number = 0, compteur = 1, lVl, MIN = 1, MAX;
printf("\t\t\t\t===Menu===\n\n");
printf("\t\t\t1- Niveau 1 : de 1 a 100.\n\n");
printf("\t\t\t2- Niveau 2 : de 1 a 1000.\n\n");
printf("\t\t\t3- Niveau 3 : de 1 a 10000.\n\n");
scanf("%d", &lVl);
switch (lVl)
{
case 1:
MAX = 10;
break;
case 2:
MAX = 100;
break;
case 3:
MAX = 1000;
break;
}
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
do
{
printf("Quel est le nombre Mystere ?\n");
scanf("%d", &number);
if (number < nombreMystere)
{
printf("C'est plus ^^\n");
}
else if (number > nombreMystere)
{
printf("C'est moins ^^\n");
}
else
{
printf("Bravo, vous l'avez trouver en %d coups ^^\n", compteur);
}
compteur++;
} while (number != nombreMystere);
return 0;
}
C'est vraie que j'en avais trop fait au début, et que c'était hyper long pour un simple programme qui ne sert quasiment a rien (trop de répétition :p) mais bon voila j'ai fais ce que j'ai pu.
Merci une énième fois ^^
Si tu veux la vérité j'ai eclaté de rire quand j'ai vu les fautes, mais bon je débute, et je crois que j'ai bien droit a ça :p.
Bref voila ce que ça donne :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int nombreMystere, number = 0, compteur = 1, lVl, MIN = 1, MAX;
printf("\t\t\t\t===Menu===\n\n");
printf("\t\t\t1- Niveau 1 : de 1 a 100.\n\n");
printf("\t\t\t2- Niveau 2 : de 1 a 1000.\n\n");
printf("\t\t\t3- Niveau 3 : de 1 a 10000.\n\n");
scanf("%d", &lVl);
switch (lVl)
{
case 1:
MAX = 10;
break;
case 2:
MAX = 100;
break;
case 3:
MAX = 1000;
break;
}
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
do
{
printf("Quel est le nombre Mystere ?\n");
scanf("%d", &number);
if (number < nombreMystere)
{
printf("C'est plus ^^\n");
}
else if (number > nombreMystere)
{
printf("C'est moins ^^\n");
}
else
{
printf("Bravo, vous l'avez trouver en %d coups ^^\n", compteur);
}
compteur++;
} while (number != nombreMystere);
return 0;
}
C'est vraie que j'en avais trop fait au début, et que c'était hyper long pour un simple programme qui ne sert quasiment a rien (trop de répétition :p) mais bon voila j'ai fais ce que j'ai pu.
Merci une énième fois ^^