Message d'erreur : programmation en console

Résolu/Fermé
coleturner Messages postés 35 Date d'inscription samedi 15 mars 2008 Statut Membre Dernière intervention 20 avril 2008 - 18 mars 2008 à 19:22
coleturner Messages postés 35 Date d'inscription samedi 15 mars 2008 Statut Membre Dernière intervention 20 avril 2008 - 18 mars 2008 à 22:49
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;
}

10 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
18 mars 2008 à 19:29
Bonjour,

Il serait bien de saisir le niveau de jeu avant de déterminer le nombre mystère !!! non ?

;o)

Polux
0
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
18 mars 2008 à 19:46
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.
0
coleturner Messages postés 35 Date d'inscription samedi 15 mars 2008 Statut Membre Dernière intervention 20 avril 2008 2
18 mars 2008 à 20:04
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;
}
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
18 mars 2008 à 20:13
après ton switch fait un printf du nombreMaximum pour voir sa valeur ... je ne crois pas qu'il contienne quelque chose
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
18 mars 2008 à 20:30
Toujours le problème du switch qui contient des instructions inopérantes.

M.
0
coleturner Messages postés 35 Date d'inscription samedi 15 mars 2008 Statut Membre Dernière intervention 20 avril 2008 2
18 mars 2008 à 20:57
le nombre max apres le switch est le numero de la difficulté :o
0
coleturner Messages postés 35 Date d'inscription samedi 15 mars 2008 Statut Membre Dernière intervention 20 avril 2008 2
18 mars 2008 à 21:00
comment je pourrai changer les instructions du switch, pour que ça marche?
0
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
18 mars 2008 à 21:17
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.
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
18 mars 2008 à 21:03
sauf que là tu ne donnes aucune valeur à nombreMaximum
0
coleturner Messages postés 35 Date d'inscription samedi 15 mars 2008 Statut Membre Dernière intervention 20 avril 2008 2
18 mars 2008 à 21:05
c'est une variable, donc 0 non?
0
coleturner Messages postés 35 Date d'inscription samedi 15 mars 2008 Statut Membre Dernière intervention 20 avril 2008 2
18 mars 2008 à 22:49
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 ;)
0