Rechercher : dans
Par :

Langage C: Problème d'accolades!

Dernière réponse le 28 jun 2009 à 11:19:18 elayyy, le 27 jun 2009 à 10:46:07 
 Signaler ce message aux modérateurs

Bonjour,je débute en programmation. J'ai commencé à programmer un petit jeu, vous devez surement connaître "Le Jeu Du Nombre Mystère!". L'ordi à un nobre en tête et il faut le trouver!
Bref...J'ai fait un petit menu et y'a plein d'accolades et je m'enbrouille... Pourtant j'ai relu, j'ai même imprimé mon code source et j'ai relié les accolades entre elles... Rien n'y fait!
si vous pouvez m'aidez...



#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
}

switch (solution)//correspond à "scanf" ci-dessus
{//début "switch"
case 1:
{// 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)
}//fin de la case 1
break;

case 2:
{//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)
}//fin de la case 2
break;
}//fin du switch

return 0;
}//fin de la fonction "int main"


Merci d'avance pour votre réponse!!!!

Configuration: Windows XP

Meilleures réponses pour « Langage C: Problème d'accolades! » dans :
Langage C++ - Les types de données Voir Les types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Langage C - Les types de données Voir Les types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...
Langage C - Les chaînes de caractères Voir Qu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...
[Langage C] C/C++ Erreur de segmentation VoirQu'est ce qu'une erreur de segmentation Vous êtes en train de développer une application sous Linux en C/C++. Tout va bien, ça compile, les oiseaux chantent. Donc vous lancez votre application pour la tester. Et vous obtenez l'un de ces deux...
Les piles en langage C VoirLes piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage...
Langage C - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C sont typées, c'est-à-dire que les données contenues dans...
Introduction au langage C VoirPetite histoire du C Le langage C a été mis au point par D.Ritchie et B.W.Kernighan au début des années 70. Leur but était de permettre de développer un langage qui permettrait d'obtenir un système d'exploitation de type UNIX portable. D.Ritchie...

1

fiddy, le 27 jun 2009 à 12:33:01
  • +1

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.

#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;
}

Google is your friend

Répondre à fiddy

2

loupius, le 27 jun 2009 à 12:47:31
  • +1

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 :-))

#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.

Répondre à loupius

3

 elayyy, le 28 jun 2009 à 11:19:18

Merci à tous, je crois qu'il faut que je revois mon cours...

merci encore
@+

Répondre à elayyy
Collection CommentÇaMarche.net