Pouvez vous m'aider ? [C++]

Fermé
aquarhum Messages postés 13 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 20 août 2009 - 16 juin 2009 à 10:56
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 16 juin 2009 à 12:42
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 !

22 réponses

FlorianWebmastering Messages postés 237 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 19 juin 2009 20
16 juin 2009 à 11:01
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
FlorianWebmastering Messages postés 237 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 19 juin 2009 20
16 juin 2009 à 11:28
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
aquarhum Messages postés 13 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 20 août 2009
16 juin 2009 à 11:07
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
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
16 juin 2009 à 11:09
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
aquarhum Messages postés 13 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 20 août 2009
16 juin 2009 à 11:14
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
FlorianWebmastering Messages postés 237 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 19 juin 2009 20
16 juin 2009 à 11:19
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
aquarhum Messages postés 13 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 20 août 2009
16 juin 2009 à 11:21
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
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
16 juin 2009 à 11:22
C'est sur que si tu ne suis pas les conseil
0
aquarhum Messages postés 13 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 20 août 2009
16 juin 2009 à 11:26
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
aquarhum Messages postés 13 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 20 août 2009
16 juin 2009 à 11:32
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
FlorianWebmastering Messages postés 237 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 19 juin 2009 20
16 juin 2009 à 11:35
..

ligne 38{cout << "ok " << nom << " ,nous allons calculer l'aire et le perimetre" << endl;
cout << "Tappez la longueur : "<<endl; cin >> longeur;
0
aquarhum Messages postés 13 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 20 août 2009
16 juin 2009 à 11:37
ca change rien :s
0
FlorianWebmastering Messages postés 237 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 19 juin 2009 20
16 juin 2009 à 11:40
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
aquarhum Messages postés 13 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 20 août 2009
16 juin 2009 à 11:47
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
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
16 juin 2009 à 11:51
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
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
16 juin 2009 à 11:49
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
aquarhum Messages postés 13 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 20 août 2009
16 juin 2009 à 11:51
je comprends pas bien :s en gros je dois changer quoi pour que mon programme fonctionne ? merci d'avance
0
FlorianWebmastering Messages postés 237 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 19 juin 2009 20
16 juin 2009 à 11:51
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
aquarhum Messages postés 13 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 20 août 2009
16 juin 2009 à 11:52
#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
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
16 juin 2009 à 11:57
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
aquarhum Messages postés 13 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 20 août 2009
16 juin 2009 à 11:59
j'en sais rien , j'ai recu le message d'erreur suivant : http://free0.hiboox.com/images/2509/diapo233d9a4db808de1572b9a6175f35c540.jpg?30
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
16 juin 2009 à 12:42
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