Erreur en language C
georgette
-
toto1983 Messages postés 205 Date d'inscription Statut Membre Dernière intervention -
toto1983 Messages postés 205 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai fais un post hier mais je ne peux pas l'éditer. Donc voila, quand on choisit 1 pour le nombre de joueurs, ça marche bien ( le choix du niveau ok, le jeu marche parfaitement en fonction du niveau etc... ). Mais voila quand on choisit 2, rien ne s'execute... Je pense que cela vient de if / else if mais je ne vois pas ou ça ne va pas...
voici mon code :
voila Merci d'avance
J'ai fais un post hier mais je ne peux pas l'éditer. Donc voila, quand on choisit 1 pour le nombre de joueurs, ça marche bien ( le choix du niveau ok, le jeu marche parfaitement en fonction du niveau etc... ). Mais voila quand on choisit 2, rien ne s'execute... Je pense que cela vient de if / else if mais je ne vois pas ou ça ne va pas...
voici mon code :
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(int argc, char *argv[]) { printf ("\n N O M B R E M Y S T E R E \n\n\n"); int choixMenu = 0; int nombreJoueur = 0; printf ("Nombre de joueur(s) : \n\n1 . 1 joueur\n2 . 2 joueurs\n\n"); printf ("Combien de joueur(s) ? \n\n"); scanf ("%d", &nombreJoueur); if (nombreJoueur == 1) { printf ("\nNiveau : \n\n1 . Facile\n2 . Normal\n3 . Difficil\n\n"); printf ("Quel niveau de difficulte ?\n\n"); scanf ("%d", &choixMenu); if (choixMenu == 1) { printf ("\nPour trouver le nombre mystere, entrez un nombre entre 1 et 100.\n\n\n"); const int MAX = 100, MIN = 1; int nombreMystere = 0, score = 0; srand(time(NULL)); // Initialisation du générateur de nombre aléatoire nombreMystere = (rand() % (MAX - MIN + 1)) + MIN; // Fonction pour choisir nombre aléatoire entre MAX et MIN int nombre = 0; while (nombre != nombreMystere) { printf ("Quel est le NOMBRE MYSTERE ? \n\n"); scanf ("%d", &nombre); printf ("\n"); score++; if (nombre > nombreMystere) { printf ("C'est moins!\n\n\n"); } if (nombre < nombreMystere) { printf ("C'est plus!\n\n\n"); } } if (nombre = nombreMystere) { printf ("Bravo! Vous avez trouve le NOMBRE MYSTERE!\n\nVous avez trouve le NOMBRE MYSTERE en %d coups\n\n", score); } } else if (choixMenu == 2) { printf ("\nPour trouver le nombre mystere, entrez un nombre entre 1 et 1000.\n\n\n"); const int MAX = 1000, MIN = 1; int nombreMystere = 0, score = 0; srand(time(NULL)); // Initialisation du générateur de nombre aléatoire nombreMystere = (rand() % (MAX - MIN + 1)) + MIN; // Fonction pour choisir nombre aléatoire entre MAX et MIN int nombre = 0; // Nombre entré par l'utilisateur while (nombre != nombreMystere) { printf ("Quel est le NOMBRE MYSTERE ? \n\n"); scanf ("%d", &nombre); printf ("\n"); score++; if (nombre > nombreMystere) { printf ("C'est moins!\n\n\n"); } if (nombre < nombreMystere) { printf ("C'est plus!\n\n\n"); } } if (nombre = nombreMystere) { printf ("Bravo! Vous avez trouve le NOMBRE MYSTERE!\n\nVous avez trouve le NOMBRE MYSTERE en %d coups\n\n", score); } } else if (choixMenu == 3) { printf ("\nPour trouver le nombre mystere, entrez un nombre entre 1 et 10000.\n\n\n"); const int MAX = 10000, MIN = 1; int nombreMystere = 0, score = 0; srand(time(NULL)); // Initialisation du générateur de nombre aléatoire nombreMystere = (rand() % (MAX - MIN + 1)) + MIN; // Fonction pour choisir nombre aléatoire entre MAX et MIN int nombre = 0;// Nombre entré par l'utilisateur while (nombre != nombreMystere) { printf ("Quel est le NOMBRE MYSTERE ? \n\n"); scanf ("%d", &nombre); printf ("\n"); score++; if (nombre > nombreMystere) { printf ("C'est moins!\n\n\n"); } if (nombre < nombreMystere) { printf ("C'est plus!\n\n\n"); } } if (nombre = nombreMystere) { printf ("Bravo! Vous avez trouve le NOMBRE MYSTERE!\n\nVous avez trouve le NOMBRE MYSTERE en %d coups\n\n", score); } } else if (nombreJoueur == 2) { printf ("\nNiveau : \n\n1 . Facile\n2 . Normal\n3 . Difficil\n\n"); printf ("Quel niveau de difficulte ?\n\n"); scanf ("%d", &choixMenu); if (choixMenu == 1) { int nombreMystere = 0, score = 0; printf ("Joueur 1, choisissez un nombre mystère en 1 et 100\n\n"); scanf ("%d", &nombreMystere); printf ("\nPour trouver le nombre mystere, entrez un nombre entre 1 et 100.\n\n\n"); int nombre = 0; scanf ("%d", &nombre); while (nombre != nombreMystere) { printf ("Quel est le NOMBRE MYSTERE ? \n\n"); scanf ("%d", &nombre); printf ("\n"); score++; if (nombre > nombreMystere) { printf ("C'est moins!\n\n\n"); } if (nombre < nombreMystere) { printf ("C'est plus!\n\n\n"); } } if (nombre = nombreMystere) { printf ("Bravo! Vous avez trouve le NOMBRE MYSTERE!\n\nVous avez trouve le NOMBRE MYSTERE en %d coups\n\n", score); } } else if (choixMenu == 2) { int nombreMystere = 0, score = 0; printf ("Joueur 1, choisissez un nombre mystère en 1 et 1000\n\n"); scanf ("%d", &nombreMystere); printf ("\nPour trouver le nombre mystere, entrez un nombre entre 1 et 1000.\n\n\n"); int nombre = 0; scanf ("%d", &nombre); while (nombre != nombreMystere) { printf ("Quel est le NOMBRE MYSTERE ? \n\n"); scanf ("%d", &nombre); printf ("\n"); score++; if (nombre > nombreMystere) { printf ("C'est moins!\n\n\n"); } if (nombre < nombreMystere) { printf ("C'est plus!\n\n\n"); } } if (nombre = nombreMystere) { printf ("Bravo! Vous avez trouve le NOMBRE MYSTERE!\n\nVous avez trouve le NOMBRE MYSTERE en %d coups\n\n", score); } } else if (choixMenu == 3) { int nombreMystere = 0, score = 0; printf ("Joueur 1, choisissez un nombre mystère en 1 et 1000\n\n"); scanf ("%d", &nombreMystere); printf ("\nPour trouver le nombre mystere, entrez un nombre entre 1 et 1000.\n\n\n"); int nombre = 0; scanf ("%d", &nombre); while (nombre != nombreMystere) { printf ("Quel est le NOMBRE MYSTERE ? \n\n"); scanf ("%d", &nombre); printf ("\n"); score++; if (nombre > nombreMystere) { printf ("C'est moins!\n\n\n"); } if (nombre < nombreMystere) { printf ("C'est plus!\n\n\n"); } } if (nombre = nombreMystere) { printf ("Bravo! Vous avez trouve le NOMBRE MYSTERE!\n\nVous avez trouve le NOMBRE MYSTERE en %d coups\n\n", score); } } } } }
voila Merci d'avance
A voir également:
- Erreur en language C
- Erreur 0x80070643 - Accueil - Windows
- J'aime par erreur facebook notification - Forum Facebook
- Erreur de lecture reconnecté en 3s - Forum TV & Vidéo
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
- Comment recuperer whatsapp supprimé par erreur - Guide
8 réponses
Oula t'as pensé à découper ton programme en fonctions par hasard??? Parce que là ça fait un peu bloc, plein de conditions imbriquées et tout
Scuse moi je débute :$
Aufaite j'ai oublié de préciser que c'était une application console. Quand tu parles de "decouper", tu veux dire sauter des lignes entre les fonctions?
Aufaite j'ai oublié de préciser que c'était une application console. Quand tu parles de "decouper", tu veux dire sauter des lignes entre les fonctions?
Découper en fonctions, c'est faire des sous programmes qui sont tous liés et qui communiquent entre eux si tu préfères.
Et même sans ça, l'indentation de ton code est pas bof, ça rend ton programme franchement difficilement lisible. Si tu veux de l'aide, contactes moi: martel.kvn@gmail.com
Et même sans ça, l'indentation de ton code est pas bof, ça rend ton programme franchement difficilement lisible. Si tu veux de l'aide, contactes moi: martel.kvn@gmail.com
En gros ce qu'on veut dire par "créer des fonctions", c'est que tu dois structurer ton programme. Tu verras ça quand tu progresseras, mais en gros ça veut dire la chose suivante :
Ton programme, en l'état, ressemble à la chose suivante :
Quand tu le structureras avec des fonctions, il pourra ressembler à la chose suivante :
Tu vois, tu entres dans le main() qui appelle la fonction qui sélectionne le nombre de joueurs.
En fonction du nombre de joueurs, tu entres dans la fonction de sélection du niveau, et une fois ceci fait tu appelles la fonction nombre_mystere() qui contient les instructions de ton jeu.
Bien sûr, tu peux passer en paramètre des variables dans tes fonctions et les réutiliser après, ainsi elles peuvent communiquer entre elles. Tu verras, c'est extrêmement utile !
Quant à ton problème, je suis en train d'y réfléchir.
Ton programme, en l'état, ressemble à la chose suivante :
main() { // on choisit le nombre de joueurs // on fait les instructions correspondant au menu // on boucle jusqu'à ce que le joueur trouve la solution ou perde }
Quand tu le structureras avec des fonctions, il pourra ressembler à la chose suivante :
-------------------------------------------------------------------------------------- main() { selection_nombre_joueurs(); } void selection_nombre_joueurs() { selection_niveau(); } void selection_niveau() { nombre_mystere(); } void nombre_mystere() { // contient les instructions et boucles du jeu. } --------------------------------------------------------------------------------------
Tu vois, tu entres dans le main() qui appelle la fonction qui sélectionne le nombre de joueurs.
En fonction du nombre de joueurs, tu entres dans la fonction de sélection du niveau, et une fois ceci fait tu appelles la fonction nombre_mystere() qui contient les instructions de ton jeu.
Bien sûr, tu peux passer en paramètre des variables dans tes fonctions et les réutiliser après, ainsi elles peuvent communiquer entre elles. Tu verras, c'est extrêmement utile !
Quant à ton problème, je suis en train d'y réfléchir.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ah d'accord je crois que j'ai compris ce que c'était :)
Merci Yuku.
@Calli : je t'es envoyé un mail :)
Merci Yuku.
@Calli : je t'es envoyé un mail :)
J'ai trouvé ton problème.
En fait il est très simple : tu as mal fermé ton "if" initial qui vérifie le nombre de joueurs.
Rajoute une accolade fermante ( } ) juste avant ton else if (nombreJoueur == 2) à la ligne 113, et enlève une accolade fermante à la fin du programme :)
En fait il est très simple : tu as mal fermé ton "if" initial qui vérifie le nombre de joueurs.
Rajoute une accolade fermante ( } ) juste avant ton else if (nombreJoueur == 2) à la ligne 113, et enlève une accolade fermante à la fin du programme :)
j'ajouterai aussi pour appuyer ce que te disais qq'un d'autre qu'une bonne indentation permet d'éviter ce genre de soucis, difficiles à voir sinon.
En gros, il faut indenter lorsque tu ouvres une accolade, et enlever l'indentation lorsque tu fermes une accolade:
ça c'est la manière que je préfère (Avec aussi quelques lignes vides pour clarifier certains morceaux de la fonction). Certains prennent une nouvelle ligne pour ouvrir les accolades :
ce qui est très clair aussi, et peut-être préférable.
Dans tous les cas, on voit clairement en regardant à quel if ou quel while etc... correspond l'accolade fermante.
En gros, il faut indenter lorsque tu ouvres une accolade, et enlever l'indentation lorsque tu fermes une accolade:
int fonction(void) { //des instructions if (qqchose) { //des instructions // encore } else { //d'autres if (autrechose) { //autres instru //encore } } }
ça c'est la manière que je préfère (Avec aussi quelques lignes vides pour clarifier certains morceaux de la fonction). Certains prennent une nouvelle ligne pour ouvrir les accolades :
int fonction(void) { //des instructions if (qqchose) { //des instructions // encore } else { //d'autres if (autrechose) { //autres instru //encore } } }
ce qui est très clair aussi, et peut-être préférable.
Dans tous les cas, on voit clairement en regardant à quel if ou quel while etc... correspond l'accolade fermante.