Pouvez vous m'aider ? [C++]

Bonjour,
je suis un novice en C++ et je n'arrive pas a voir le probleme dans mon code .

#include<iostream>
using namespace std;
const int MAX = 16;
using namespace std;

void main(void)
{ // debut du programme
int choix, deux, re, un;
double longeur, largeur, surface, perimetre;
char nom[MAX];
cout << "Bonjour , tout d'abord quel est ton prenom ?" << endl;
cin >> nom;
cout << "Bonjour " << nom << " et merci d'utiliser mon programme." << endl;
do
{ // Commencement de la boucle
cout << "Voici les differentes options possibles : Calculer le perimetre , calculer l'aire" << endl;
cout << " pour le perimetre tappe 1 , pour l'aire tappe 2 et pour les deux tappe 3" << endl;
choix = 2;
cin >> choix;

if(choix == deux) // choix deux = l'aire
cout << "ok " << nom << " ,nous allons calculer l'aire" << endl;
cout << "Tappez la longueur : " ; cin >> longeur;
cout << "Tappez la largeur : " ; cin >> largeur;
surface = longeur*largeur;
cout << nom << " l'aire vaut : " << surface << endl;
else
{// commencement des conditions
if(choix < deux)// choix 1 = perimetre
cout << "ok " << nom << " , nous allons calculer le perimetre" << endl;
cout << "Tappez la longueur : " ; cin >> longeur;
cout << "Tappez la largeur : " ; cin >> largeur;
perimetre = 2*(longeur+largeur);
cout << nom << " le perimetre vaut : " << perimetre << endl;

else (choix > deux)// choix 3 = aire + perimetre
cout << "ok " << nom << " ,nous allons calculer l'aire et le perimetre" << endl;
cout << "Tappez la longueur : " ; cin >> longeur;
cout << "Tappez la largeur : " ; cin >> largeur;
perimetre = 2*(longeur+largeur);
surface = longeur*largeur;
cout << nom << " le perimetre vaut : " << perimetre << endl;
cout << "et l'aire vaut : " << surface << endl;
} // fin conditions
} // fin de la boucle
cout << " Tappe sur 1 pour recommencer " << endl;
cin >> re;
while (re == un);

system("pause");
} // fin du programme

Les erreurs indiquées sont les suivantes :

1>------ Début de la génération : Projet : vingtcoeur's game, Configuration : Debug Win32 ------
1>Compilation en cours...
1>aire et perimetre.cpp
1>c:\users\jérémy\documents\visual studio 2005\projects\vingtcoeur's game\vingtcoeur's game\aire et perimetre.cpp(27) : error C2181: instruction else sans if correspondant non conforme
1>c:\users\jérémy\documents\visual studio 2005\projects\vingtcoeur's game\vingtcoeur's game\aire et perimetre.cpp(36) : error C2181: instruction else sans if correspondant non conforme
1>c:\users\jérémy\documents\visual studio 2005\projects\vingtcoeur's game\vingtcoeur's game\aire et perimetre.cpp(37) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'cout'
1>c:\users\jérémy\documents\visual studio 2005\projects\vingtcoeur's game\vingtcoeur's game\aire et perimetre.cpp(46) : error C2061: erreur de syntaxe : identificateur 'cout'
1>Le journal de génération a été enregistré à l'emplacement "file://c:\Users\Jérémy\Documents\Visual Studio 2005\Projects\vingtcoeur's game\vingtcoeur's game\Debug\BuildLog.htm"
1>vingtcoeur's game - 4 erreur(s), 0 avertissement(s)
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

Merci d'avance !
Configuration: Windows Vista Internet Explorer 7.0

22 réponses

  1. tout d'abord dans ce passage tu as une erreur, si tu veux mettre plusieurs instruction sous une condition il faut que tu les mettes dans un bloc.

    if(choix == deux) // choix deux = l'aire
    {cout << "ok " << nom << " ,nous allons calculer l'aire" << endl;
    cout << "Tappez la longueur : " ; cin >> longeur;
    cout << "Tappez la largeur : " ; cin >> largeur;
    surface = longeur*largeur;
    cout << nom << " l'aire vaut : " << surface << endl;
    } fin de condition
    ...
    {// commencement des conditions
    if(choix < deux)// choix 1 = perimetre
    {cout << "ok " << nom << " , nous allons calculer le perimetre" << endl;
    cout << "Tappez la longueur : " ; cin >> longeur;
    cout << "Tappez la largeur : " ; cin >> largeur;
    perimetre = 2*(longeur+largeur);
    cout << nom << " le perimetre vaut : " << perimetre << endl;
    } // fin if
    else (choix > deux)// choix 3 = aire + perimetre
    {cout << "ok " << nom << " ,nous allons calculer l'aire et le perimetre" << endl;
    cout << "Tappez la longueur : " ; cin >> longeur;
    cout << "Tappez la largeur : " ; cin >> largeur;
    perimetre = 2*(longeur+largeur);
    surface = longeur*largeur;
    cout << nom << " le perimetre vaut : " << perimetre << endl;
    cout << "et l'aire vaut : " << surface << endl;
    } // fin else
    } // fin conditions
    1
    1. Pour cette erreur allez voir ligne 38 de votre code, il se peut que vous ayez omis de terminer une instruction ( avec ; ..) et vérifiez aussi l'indentation de votre code.
      1
      1. merci beaucoup , il me detecte une erreure en moins :D mais il m'en reste 3 :/
        quelqu'un serait m'aider ?

        Merci d'avance :D
        0
        1. Contributeur
          De même, il me semble qu'il faut mettre la while juste après l'accolade fermante.
          De plus, il vaudrais mieux initialiser tes entiers (un, deux, etc.).
          un seul using namespace std; suffit.
          0
          1. Merci beaucoup ca arrange une partie de mon probleme mais si je met l" while a l'accolade fermante , mon instruction : " cout << " Tappe sur 1 pour recommencer " << endl;
            cin >> re;" ne va pas etre prise en compte vu qu'elle se situe apres , non ?

            j'ai changé mon programme suivant vos conseils mais des erreurs persistent . Voici le code :

            #include<iostream>
            using namespace std;
            const int MAX = 16;
            using namespace std;

            void main(void)
            { // debut du programme
            int choix, deux, re, un;
            double longeur, largeur, surface, perimetre;
            char nom[MAX];
            cout << "Bonjour , tout d'abord quel est ton prenom ?" << endl;
            cin >> nom;
            cout << "Bonjour " << nom << " et merci d'utiliser mon programme." << endl;
            do
            { // Commencement de la boucle
            cout << "Voici les differentes options possibles : Calculer le perimetre , calculer l'aire" << endl;
            cout << " pour le perimetre tappe 1 , pour l'aire tappe 2 et pour les deux tappe 3" << endl;
            choix = 2;
            cin >> choix;

            if(choix == deux) // choix deux = l'aire
            cout << "ok " << nom << " ,nous allons calculer l'aire" << endl;
            cout << "Tappez la longueur : " ; cin >> longeur;
            cout << "Tappez la largeur : " ; cin >> largeur;
            surface = longeur*largeur;
            cout << nom << " l'aire vaut : " << surface << endl;
            else
            {// commencement des conditions
            if(choix < deux)// choix 1 = perimetre
            {cout << "ok " << nom << " , nous allons calculer le perimetre" << endl;
            cout << "Tappez la longueur : " ; cin >> longeur;
            cout << "Tappez la largeur : " ; cin >> largeur;
            perimetre = 2*(longeur+largeur);
            cout << nom << " le perimetre vaut : " << perimetre << endl;
            } // fin if
            else (choix > deux)// choix 3 = aire + perimetre
            {cout << "ok " << nom << " ,nous allons calculer l'aire et le perimetre" << endl;
            cout << "Tappez la longueur : " ; cin >> longeur;
            cout << "Tappez la largeur : " ; cin >> largeur;
            perimetre = 2*(longeur+largeur);
            surface = longeur*largeur;
            cout << nom << " le perimetre vaut : " << perimetre << endl;
            cout << "et l'aire vaut : " << surface << endl;
            } // fin else
            } // fin conditions
            } // fin de la boucle
            while (re == un);
            cout << " Tappe sur 1 pour recommencer " << endl;
            cin >> re;
            system("pause");
            } // fin du programme

            les erreurs :

            1>------ Début de la génération : Projet : vingtcoeur's game, Configuration : Debug Win32 ------
            1>Compilation en cours...
            1>aire et perimetre.cpp
            1>c:\users\jérémy\documents\visual studio 2005\projects\vingtcoeur's game\vingtcoeur's game\aire et perimetre.cpp(27) : error C2181: instruction else sans if correspondant non conforme
            1>c:\users\jérémy\documents\visual studio 2005\projects\vingtcoeur's game\vingtcoeur's game\aire et perimetre.cpp(37) : error C2143: erreur de syntaxe : absence de ';' avant '{'
            1>Le journal de génération a été enregistré à l'emplacement "file://c:\Users\Jérémy\Documents\Visual Studio 2005\Projects\vingtcoeur's game\vingtcoeur's game\Debug\BuildLog.htm"
            1>vingtcoeur's game - 2 erreur(s), 0 avertissement(s)
            ========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
            0
            1. if(choix == deux) // choix deux = l'aire
              {cout << "ok " << nom << " ,nous allons calculer l'aire" << endl;
              cout << "Tappez la longueur : " ; cin >> longeur;
              cout << "Tappez la largeur : " ; cin >> largeur;
              surface = longeur*largeur;
              cout << nom << " l'aire vaut : " << surface << endl;
              } //fin de choix 2
              else
              {// commencement des conditions

              si tu ne mets pas les instructions de ta condition dans un bloc, ta condition se terminera dès la première instruction c'est pourquoi il faut les mettre entre { }
              ;)
              0
              1. en suivant ton conseil Florainwebmastering voic les erreurs :
                1>------ Début de la génération : Projet : vingtcoeur's game, Configuration : Debug Win32 ------
                1>Compilation en cours...
                1>aire et perimetre.cpp
                1>c:\users\jérémy\documents\visual studio 2005\projects\vingtcoeur's game\vingtcoeur's game\aire et perimetre.cpp(21) : error C2059: erreur de syntaxe : '{'
                1>c:\users\jérémy\documents\visual studio 2005\projects\vingtcoeur's game\vingtcoeur's game\aire et perimetre.cpp(21) : error C2143: erreur de syntaxe : absence de ';' avant '{'
                1>c:\users\jérémy\documents\visual studio 2005\projects\vingtcoeur's game\vingtcoeur's game\aire et perimetre.cpp(22) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'cout'
                1>c:\users\jérémy\documents\visual studio 2005\projects\vingtcoeur's game\vingtcoeur's game\aire et perimetre.cpp(28) : error C2181: instruction else sans if correspondant non conforme
                1>c:\users\jérémy\documents\visual studio 2005\projects\vingtcoeur's game\vingtcoeur's game\aire et perimetre.cpp(38) : error C2143: erreur de syntaxe : absence de ';' avant '{'
                1>Le journal de génération a été enregistré à l'emplacement "file://c:\Users\Jérémy\Documents\Visual Studio 2005\Projects\vingtcoeur's game\vingtcoeur's game\Debug\BuildLog.htm"
                1>vingtcoeur's game - 5 erreur(s), 0 avertissement(s)
                ========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

                #include<iostream>
                using namespace std;
                const int MAX = 16;
                using namespace std;

                void main(void)
                { // debut du programme
                int choix, deux, re, un;
                double longeur, largeur, surface, perimetre;
                char nom[MAX];
                cout << "Bonjour , tout d'abord quel est ton prenom ?" << endl;
                cin >> nom;
                cout << "Bonjour " << nom << " et merci d'utiliser mon programme." << endl;
                do
                { // Commencement de la boucle
                cout << "Voici les differentes options possibles : Calculer le perimetre , calculer l'aire" << endl;
                cout << " pour le perimetre tappe 1 , pour l'aire tappe 2 et pour les deux tappe 3" << endl;
                choix = 2;
                cin >> choix;

                if{(choix == deux) // choix deux = l'aire
                cout << "ok " << nom << " ,nous allons calculer l'aire" << endl;
                cout << "Tappez la longueur : " ; cin >> longeur;
                cout << "Tappez la largeur : " ; cin >> largeur;
                surface = longeur*largeur;
                cout << nom << " l'aire vaut : " << surface << endl;
                }
                else
                {// commencement des conditions
                if(choix < deux)// choix 1 = perimetre
                {cout << "ok " << nom << " , nous allons calculer le perimetre" << endl;
                cout << "Tappez la longueur : " ; cin >> longeur;
                cout << "Tappez la largeur : " ; cin >> largeur;
                perimetre = 2*(longeur+largeur);
                cout << nom << " le perimetre vaut : " << perimetre << endl;
                } // fin if
                else (choix > deux)// choix 3 = aire + perimetre
                {cout << "ok " << nom << " ,nous allons calculer l'aire et le perimetre" << endl;
                cout << "Tappez la longueur : " ; cin >> longeur;
                cout << "Tappez la largeur : " ; cin >> largeur;
                perimetre = 2*(longeur+largeur);
                surface = longeur*largeur;
                cout << nom << " le perimetre vaut : " << perimetre << endl;
                cout << "et l'aire vaut : " << surface << endl;
                } // fin else
                } // fin conditions
                } // fin de la boucle
                while (re == un);
                cout << " Tappe sur 1 pour recommencer " << endl;
                cin >> re;
                system("pause");
                } // fin du programme
                0
                1. Contributeur
                  C'est sur que si tu ne suis pas les conseil
                  0
                  1. desole fautte de frappe j'avais mal placé la balis : {

                    voici les erreurs :

                    1>------ Début de la génération : Projet : vingtcoeur's game, Configuration : Debug Win32 ------
                    1>Compilation en cours...
                    1>aire et perimetre.cpp
                    1>c:\users\jérémy\documents\visual studio 2005\projects\vingtcoeur's game\vingtcoeur's game\aire et perimetre.cpp(38) : error C2143: erreur de syntaxe : absence de ';' avant '{'
                    1>Le journal de génération a été enregistré à l'emplacement "file://c:\Users\Jérémy\Documents\Visual Studio 2005\Projects\vingtcoeur's game\vingtcoeur's game\Debug\BuildLog.htm"
                    1>vingtcoeur's game - 1 erreur(s), 0 avertissement(s)
                    ========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

                    voila encore un probleme :s

                    merci deja beaucoup pour votre aide
                    0
                    1. perimetre = 2*(longeur+largeur);
                      cout << nom << " le perimetre vaut : " << perimetre << endl;
                      } // fin if
                      else (choix > deux) // choix 3 = aire + perimetre
                      ligne 38{cout << "ok " << nom << " ,nous allons calculer l'aire et le perimetre" << endl;
                      cout << "Tappez la longueur : " ; cin >> longeur;

                      JE ne vois pas l'erreur :s
                      Quelqu'un sait m'aider ?
                      0
                      1. ..

                        ligne 38{cout << "ok " << nom << " ,nous allons calculer l'aire et le perimetre" << endl;
                        cout << "Tappez la longueur : "<<endl; cin >> longeur;
                        0
                        1. else (choix > deux) // choix 3 = aire + perimetre
                          ligne 38{cout << "ok " << nom << " ,nous allons calculer l'aire et le perimetre" << endl;
                          cout << "Tappez la longueur : "<<endl; cin >> longeur;

                          est faux

                          else // choix 3 = aire + perimetre
                          {cout << "ok " << nom << " ,nous allons calculer l'aire et le perimetre" << endl;
                          cout << "Tappez la longueur : "<<endl; cin >> longeur;

                          ( pas besoin de (choix > deux) ... surtout pas dans un else... si tu tiens à le mettre ça donne:
                          else
                          if(choix > deux) // choix 3 = aire + perimetre
                          {cout << "ok " << nom << " ,nous allons calculer l'aire et le perimetre" << endl;
                          cout << "Tappez la longueur : "<<endl; cin >> longeur;

                          ...
                          0
                          1. merci le programme demarre :D mais ... quand j'arrive au choix d'option ( 1 : perimetre , ...) le programme me donne un message d'erreur
                            le message d'erreur ==> http://free0.hiboox.com/images/2509/diapo233d9a4db808de1572b9a6175f35c540.jpg?30

                            Je comprends plus rien :(
                            0
                            1. Contributeur
                              Si tu avais suivie mon conseil, tu n'aurai pas ce problème !
                              Et encore, Il est gentil ton IDE, il te préviens et de dit exactement ce qui ne va pas. Sous un autre tu aurai un programme qui ne fonctionne pas, et tu galèrerais à trouver pourquoi.
                              0
                          2. Contributeur
                            Bien vu.
                            le mieux est de le mettre dans les commentaites ce qu'il y a entre parenthèse.
                            à l'avenir, aquarhum, utilise les balises de code pour mettre ton code source, ça sera plus lisible.
                            exmple code source
                            if(...)
                                  {
                                  ljl;
                                  }
                            else {k;}
                            0
                            1. je comprends pas bien :s en gros je dois changer quoi pour que mon programme fonctionne ? merci d'avance
                              0
                              1. C'est normal - dans tes conditions tu compares choix à un ou deux que ton programme analyse comme des variables de plus non déclarées, alors que tu demandes à l'utilisateur d'entrer des valeur (numériques au clavier que tu ne stocke pas dans ces variables)

                                Envoi moi ton code complet et je te le renverrai corrigé :)
                                0
                                1. #include<iostream>
                                  using namespace std;
                                  const int MAX = 16;
                                  using namespace std;

                                  void main(void)
                                  { // debut du programme
                                  int choix, deux, re, un;
                                  double longeur, largeur, surface, perimetre;
                                  char nom[MAX];
                                  cout << "Bonjour , tout d'abord quel est ton prenom ?" << endl;
                                  cin >> nom;
                                  cout << "Bonjour " << nom << " et merci d'utiliser mon programme." << endl;
                                  do
                                  { // Commencement de la boucle
                                  cout << "Voici les differentes options possibles : Calculer le perimetre , calculer l'aire" << endl;
                                  cout << " pour le perimetre tappe 1 , pour l'aire tappe 2 et pour les deux tappe 3" << endl;
                                  choix = 2;
                                  cin >> choix;

                                  if(choix == deux) // choix deux = l'aire
                                  {cout << "ok " << nom << " ,nous allons calculer l'aire" << endl;
                                  cout << "Tappez la longueur : " ; cin >> longeur;
                                  cout << "Tappez la largeur : " ; cin >> largeur;
                                  surface = longeur*largeur;
                                  cout << nom << " l'aire vaut : " << surface << endl;
                                  }
                                  else
                                  {// commencement des conditions
                                  if(choix < deux)// choix 1 = perimetre
                                  {cout << "ok " << nom << " , nous allons calculer le perimetre" << endl;
                                  cout << "Tappez la longueur : " ; cin >> longeur;
                                  cout << "Tappez la largeur : " ; cin >> largeur;
                                  perimetre = 2*(longeur+largeur);
                                  cout << nom << " le perimetre vaut : " << perimetre << endl;
                                  } // fin if
                                  else // choix 3 = aire + perimetre
                                  {cout << "ok " << nom << " ,nous allons calculer l'aire et le perimetre" << endl;
                                  cout << "Tappez la longueur : "<<endl; cin >> longeur;
                                  cout << "Tappez la longueur : " << endl; ; cin >> longeur;
                                  cout << "Tappez la largeur : " ; cin >> largeur;
                                  perimetre = 2*(longeur+largeur);
                                  surface = longeur*largeur;
                                  cout << nom << " le perimetre vaut : " << perimetre << endl;
                                  cout << "et l'aire vaut : " << surface << endl;
                                  } // fin else
                                  } // fin conditions
                                  } // fin de la boucle
                                  while (re == un);
                                  cout << " Tappe sur 1 pour recommencer " << endl;
                                  cin >> re;
                                  system("pause");
                                  } // fin du programme

                                  Merci a toi Florianwebmastering
                                  0
                                  1. Contributeur
                                    C'est sur, c'est tellement plus simple d'attendre que les autres corrige ton code plutôt que de comprendre par toi même.
                                    La solution, je te l'ai donné lors de mon premier message, à croire que je parle dans le vide.
                                    Arrivé au test, ta variable deux, elle vaut quoi ?
                                    0
                                    1. j'en sais rien , j'ai recu le message d'erreur suivant : http://free0.hiboox.com/images/2509/diapo233d9a4db808de1572b9a6175f35c540.jpg?30
                                      0
                                      1. Contributeur
                                        C'est ça qui est grave, tu n'a aucune idée de ce que doit valoir ta variable à un instant donnée.
                                        Si tu ne lui donne pas de valeur ta variable prend n'importe quoi, c'est normal qu'il ne veuille pas comparer.
                                        0
                                    • 1
                                    • 2