Téléchargement
illégal
Posez votre question Signaler

Message d'erreur : programmation en console [Résolu]

coleturner 36Messages postés 15 mars 2008Date d'inscription - Dernière réponse le 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;
}
Lire la suite 

Message d'erreur : programmation en console »

11 réponses
Réponse
+0
moins plus
Bonjour,

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

;o)

Polux
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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;
}
Ajouter un commentaire
Réponse
+0
moins plus
après ton switch fait un printf du nombreMaximum pour voir sa valeur ... je ne crois pas qu'il contienne quelque chose
Ajouter un commentaire
Réponse
+0
moins plus
Toujours le problème du switch qui contient des instructions inopérantes.

M.
Ajouter un commentaire
Réponse
+0
moins plus
le nombre max apres le switch est le numero de la difficulté :o
Ajouter un commentaire
Réponse
+0
moins plus
comment je pourrai changer les instructions du switch, pour que ça marche?
Mahmah- 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.
Ajouter un commentaire
Réponse
+0
moins plus
sauf que là tu ne donnes aucune valeur à nombreMaximum
Ajouter un commentaire
Réponse
+0
moins plus
c'est une variable, donc 0 non?
Ajouter un commentaire
Réponse
+0
moins plus
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 ;)
Ajouter un commentaire
Ce document intitulé « message d'erreur : programmation en console » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?