Langage C: Problème d'accolades!
Résolu/Fermé
A voir également:
- Langage C: Problème d'accolades!
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage pascal - Télécharger - Édition & Programmation
- Delphi (langage) - Télécharger - Langages
3 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
27 juin 2009 à 12:33
27 juin 2009 à 12:33
Salut,
Il n'y a pas que des erreurs d'accolades.
N'oublie pas le point virgule à la fin du do while. N'oublie pas d'écrire le do ou le while lorsque tu fais un do while.
Voici le code corrigé (relis bien les conditions que j'ai rajoutées, je les ai juste mises pour que ça compile).
Sinon, si tu as des problèmes de ce genre, c'est que tu ne dois pas utiliser un IDE (code::blocks par exemple). L'avantage est qu'il met en couleur et t'indente le tout. L'indentation est primordiale.
Il n'y a pas que des erreurs d'accolades.
N'oublie pas le point virgule à la fin du do while. N'oublie pas d'écrire le do ou le while lorsque tu fais un do while.
Voici le code corrigé (relis bien les conditions que j'ai rajoutées, je les ai juste mises pour que ça compile).
Sinon, si tu as des problèmes de ce genre, c'est que tu ne dois pas utiliser un IDE (code::blocks par exemple). L'avantage est qu'il met en couleur et t'indente le tout. L'indentation est primordiale.
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> int main () {//début "int main" srand(time(NULL)); const int MAX = 100, MIN = 1; int nombreMystere = (rand() % (MAX - MIN + 1)) + MIN; int choix=0, solution=0, tapez1=0; do {//début de la boucle retour au menu à partir de la fin du jeu do {//début de la boucle retour au menu à partir de la fin des instructions printf ("***LE JEU DU NOMBRE MYSTERE***\n\n");//donc voila le menu printf ("1.Jouer\n"); printf ("2. Instructions\n\n"); printf ("entrez 1 ou 2\n\n"); scanf ("%d", &solution);// demande à l'utilisateur si il veut jouer ou lire instruction }while(solution==2); switch (solution)//correspond à "scanf" ci-dessus {//début "switch" case 1: do{// début case 1 do//boucle du jeu lui même { printf ("Entrez le nombre mystere:\n\n"); scanf ("%d", &choix); printf ("\n\n"); if (choix > nombreMystere)//si le nombre plus grand { printf ("Trop Grand!\n\n"); } else if (choix < nombreMystere)//si nombre plus petit { printf ("Trop Petit!\n\n"); } else//si bonne réponse { printf ("Bravo, vous avez trouvé le nombre mystere!\n\n"); printf ("tapez 1 pour retourner au menu"); scanf ("%d", &tapez1); } }//fin de la boucle du jeu lui même while (choix != nombreMystere); }// fin de la boucle retour au menu à partir de la fin du jeu while ( tapez1==1); break; case 2: do {//début case 2 printf ("***LE JEU DU NOMBRE MYSTERE***\n\n"); printf ("Le but de ce jeu est de trouver le nombre que l'ordinateur a en memoire.\n"); printf ("Bien sur, il faut le trouver avec le moins de coups possible.\n\n"); printf ("pour revenir au menu, tapez 1\n\n"); scanf ("%d", &tapez1); }////fin de la boucle retour au menu à partir de la fin des instructions while (tapez1==1); break; }//fin du switch }while(1); return 0; }
Ce programme, tel qu'il est écrit, est incompilable; ce n'est pas un problème de parenthèses, c'est un problème de structure: les boucles sont à moitié imbriquées dans le 'switch'. Elles commencent avant le 'switch' et se terminent dans le 'switch'; cela ne peut aller: la boucle est un bloc et le switch est un autre bloc, les blocs doivent être dissociés ou complètement imbriqués.
Je te propose une solution épurée et quelque peu modifiée :-))
Je te propose une solution épurée et quelque peu modifiée :-))
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> #define MIN 1 #define MAX 100 int main () { int nombreMystere, choix, solutionProposee; srand(time(NULL)); while (1) { printf ("\n\n***LE JEU DU NOMBRE MYSTERE***\n\n"); // Donc voilà le menu printf ("0 -> Fin du jeu\n"); printf ("1 -> Jouer\n"); printf ("x -> Instructions\n\n"); printf ("Votre choix: "); scanf ("%d", &choix); // Demande à l'utilisateur s'il veut jouer ou lire instruction switch (choix) { case 0: // Fin du jeu return 0; case 1: // Jouer nombreMystere = (rand() % (MAX - MIN + 1)) + MIN; while (1) // Boucle à la recherche de la solution { printf ("Entrez le nombre mystère:"); scanf ("%d", &solutionProposee); if (solutionProposee > nombreMystere) // Si le nombre est plus grand printf (" -> Trop Grand!\n"); else if (solutionProposee < nombreMystere) // Si nombre est plus petit printf (" -> Trop Petit!\n"); else // Si bonne réponse { printf ("\nBravo, vous avez trouvé le nombre mystere!\n\n"); break; // Sortie de la boucle } } break; default: printf ("***LE JEU DU NOMBRE MYSTERE***\n\n"); printf ("Le but de ce jeu est de trouver le nombre que l'ordinateur a en mémoire.\n"); printf ("Bien sûr, il faut le trouver avec le moins de coups possibles."); break; // Non nécessaire } } return 0; }Bonne compréhension.