Message d'erreur : programmation en console
Résolu
coleturner
Messages postés
35
Statut
Membre
-
coleturner Messages postés 35 Statut Membre -
coleturner Messages postés 35 Statut Membre -
Bonjour,
je suis débutant et a la demande de mon prof, je dois écrire un code d'un jeux "plus ou moins".
explications : l'ordi choisie un nombre au hasard et je dois le trouver en un minimum de coups.
j'ai réussi a tout faire mais quand j'ai voulu ajouter 3 niveaux de difficultés, ça plante ... la console s'affiche mais avec un message d'erreur
je crois que c'est le switch qui ne va pas... vous en pensez quoi?
voici le code
/* PLUS ou MOINS
Petit jeux crée par un débutant en programmation
Le but du jeux est de trouver le nombre mystere en un minimun de propositions
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
int ContinuerPartie = 1;
while(ContinuerPartie != 0)
{
long NombreMystere = 0, NombreEntre = 0, NombreDeCoups = 1;
long nombreMaximum = 0;
const long MIN = 1;
srand(time(NULL));
NombreMystere = (rand() % (nombreMaximum - MIN + 1)) + MIN;
do
{
printf("Voici les 3 niveaux de difficultés que vous pourriez choisir :\n\n");
printf("1. de 0 a 100\n");
printf("2. de 0 a 1 000\n");
printf("3. de 0 a 10 000\n\n");
printf("quel niveau voulez-vou choisir?");
scanf("%ld", &nombreMaximum);
switch(nombreMaximum)
{
case 1:
nombreMaximum <= 100;
break;
case 2:
nombreMaximum <= 1000;
break;
case 3:
nombreMaximum <= 10000;
break;
}
printf("Entrez le nombre mystere : ");
scanf("%ld", &NombreEntre);
printf("\n");
if (NombreEntre < NombreMystere)
printf("C'est plus\n");
else if (NombreEntre > NombreMystere)
printf("C'est moins\n");
else
printf("Bravo vous avez trouvez le nombre Mystere en %ld foi(s)\n\n", NombreDeCoups);
NombreDeCoups++;
} while(NombreEntre != NombreMystere);
printf("voulez-vous recommencer?\n\n");
printf("1. oui\n");
printf("0. non\n");
printf("Que decidez-vous? ");
scanf("%ld", &ContinuerPartie);
printf("\n\n");
}
system("PAUSE");
return 0;
}
je suis débutant et a la demande de mon prof, je dois écrire un code d'un jeux "plus ou moins".
explications : l'ordi choisie un nombre au hasard et je dois le trouver en un minimum de coups.
j'ai réussi a tout faire mais quand j'ai voulu ajouter 3 niveaux de difficultés, ça plante ... la console s'affiche mais avec un message d'erreur
je crois que c'est le switch qui ne va pas... vous en pensez quoi?
voici le code
/* PLUS ou MOINS
Petit jeux crée par un débutant en programmation
Le but du jeux est de trouver le nombre mystere en un minimun de propositions
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
int ContinuerPartie = 1;
while(ContinuerPartie != 0)
{
long NombreMystere = 0, NombreEntre = 0, NombreDeCoups = 1;
long nombreMaximum = 0;
const long MIN = 1;
srand(time(NULL));
NombreMystere = (rand() % (nombreMaximum - MIN + 1)) + MIN;
do
{
printf("Voici les 3 niveaux de difficultés que vous pourriez choisir :\n\n");
printf("1. de 0 a 100\n");
printf("2. de 0 a 1 000\n");
printf("3. de 0 a 10 000\n\n");
printf("quel niveau voulez-vou choisir?");
scanf("%ld", &nombreMaximum);
switch(nombreMaximum)
{
case 1:
nombreMaximum <= 100;
break;
case 2:
nombreMaximum <= 1000;
break;
case 3:
nombreMaximum <= 10000;
break;
}
printf("Entrez le nombre mystere : ");
scanf("%ld", &NombreEntre);
printf("\n");
if (NombreEntre < NombreMystere)
printf("C'est plus\n");
else if (NombreEntre > NombreMystere)
printf("C'est moins\n");
else
printf("Bravo vous avez trouvez le nombre Mystere en %ld foi(s)\n\n", NombreDeCoups);
NombreDeCoups++;
} while(NombreEntre != NombreMystere);
printf("voulez-vous recommencer?\n\n");
printf("1. oui\n");
printf("0. non\n");
printf("Que decidez-vous? ");
scanf("%ld", &ContinuerPartie);
printf("\n\n");
}
system("PAUSE");
return 0;
}
Configuration: Windows XP Internet Explorer 7.0
10 réponses
-
Bonjour,
Il serait bien de saisir le niveau de jeu avant de déterminer le nombre mystère !!! non ?
;o)
Polux -
Salutations,
Le dit message d'erreur aurait pu aider. Il m'a sauté à la gueule quand j'ai lancé le programme.
Il a planté sur cette ligne:
NombreMystere = (rand() % (nombreMaximum - MIN + 1)) + MIN;
Division par zéro.
nombreMaximum vaut 0, MIN vaut 1, le modulo zéro plante.
En sautant la ligne...
Le niveau de difficulté est demandé à chaque tour de jeu.
Le switch est inopérant. (les instructions du type nombreMaximum <= 100; ne font rien)
M. -
j'ai changé, et maintenant il me met comme nombre mystere le numero de la difficulté :o
par exemple niveau 1 ; nombre mystere = 1
voila ce que j'ai fait
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
int ContinuerPartie = 1;
while(ContinuerPartie != 0)
{
long NombreEntre = 0, NombreDeCoups = 1;
const long MIN = 1;
long nombreMaximum = 0;
printf("Voici les 3 niveaux de difficultés que vous pourriez choisir :\n\n");
printf("1. de 0 a 100\n");
printf("2. de 0 a 1 000\n");
printf("3. de 0 a 10 000\n\n");
printf("quel niveau voulez-vou choisir?");
scanf("%ld", &nombreMaximum);
switch(nombreMaximum)
{
case 1:
nombreMaximum <= 100;
break;
case 2:
nombreMaximum <= 1000;
break;
case 3:
nombreMaximum <= 10000;
break;
}
long NombreMystere = 0;
srand(time(NULL));
NombreMystere = (rand() % (nombreMaximum - MIN + 1)) + MIN;
do
{
printf("Entrez le nombre mystere : ");
scanf("%ld", &NombreEntre);
printf("\n");
if (NombreEntre < NombreMystere)
printf("C'est plus\n");
else if (NombreEntre > NombreMystere)
printf("C'est moins\n");
else
printf("Bravo vous avez trouvez le nombre Mystere en %ld foi(s)\n\n", NombreDeCoups);
NombreDeCoups++;
} while(NombreEntre != NombreMystere);
printf("voulez-vous recommencer?\n\n");
printf("1. oui\n");
printf("0. non\n");
printf("Que decidez-vous? ");
scanf("%ld", &ContinuerPartie);
printf("\n\n");
}
system("PAUSE");
return 0;
} -
après ton switch fait un printf du nombreMaximum pour voir sa valeur ... je ne crois pas qu'il contienne quelque chose
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Toujours le problème du switch qui contient des instructions inopérantes.
M. -
le nombre max apres le switch est le numero de la difficulté :o
-
comment je pourrai changer les instructions du switch, pour que ça marche?
-
En remplaçant les nombreMaximum <= 100; par nombreMax = 100;
int main(void) { int i = 2; i > 4; return 0; }
C'est valide mais ça ne fait rien...
C'est un peu équivalent à
int main(void) { 6; return 0; }
ou même àint main(void) { ; return 0; }
C'est des instructions, ça compile mais c'est tout. D'ailleurs la plus part des compilateurs ne compilerons pas de code pour ces lignes là.
M.
-
-
sauf que là tu ne donnes aucune valeur à nombreMaximum
-
-
ha oui... ro la la une erreur super bête. effectivement nombre max = 100 ou 1000 ou 10000 mais pas <=
c'est une erreur vrément bete qui plante tout... je suis bete bete bete
en tous les cas, merci a vous, je vous adore ;)