[c++] parse error before string content

Fermé
edonist Messages postés 1 Date d'inscription dimanche 6 mars 2005 Statut Membre Dernière intervention 6 mars 2005 - 6 mars 2005 à 22:24
 SKZ81 - 16 mars 2005 à 22:06
bonjour

j'ai un probleme de compilation en c++. voilà ce que j'ai fait:

#include <iostream>

int main ()
{int a,b;
int c (22)
char then (c == a + b)
{
#if a == b
cout <<"a est égal à b"<<endl;
#elif a<b
cout<<"a est inférieur à b"<<endl;
#else
cout<<"a est supérieur à b"<<endl;
#endif
then "c == a+b";
cout<<"a+b est égal à"<<"22"<<endl;
}
return 0
}

le programme me trouve l'erreur suivante:
line 15: parse error before string content

la ligne 15 c'est : then "c == a+b"

je sais pas, j'ai tout essayé, les parentheses, les autres guillemets ('), etc...
rien n'y fait. c'est peut etre le "then" qui est faux, mais je sais pas quoi mettre d'autre. j'espere que vous pourrez m'aider a resoudre mon probleme. merci d'avance.

(ma configuration: windows XP , pentium 4, 2,8Ghz)

9 réponses

Ravachol Messages postés 560 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 30 octobre 2005 120
7 mars 2005 à 18:11
Salut,
Ne le prend surtout pas mal, mais as tu jeté un oeil dans un bouquin ou un tutoriel avant de te lancer ? ;-)
Car ton code source semble être un mélange de mot clé de Pascal et de C++ avec une syntaxe qui ne fonctionnerait sur aucun compilateur.
Perso, je te conseillerais de commencer par suivre un tutoriel.
En voici 2:
http://www.ann.jussieu.fr/courscpp/Sommaire.html
http://www-ipst.u-strasbg.fr/pat/program/cpp/

Mais rien ne t'empêches d'en rechercher d'autres, sur le net, qui seraient plus adaptés à ton compilateur.

Bon programmation.

A++
1
tu as oublé un';' sur cette ligne : int c (22);

pour le reste, ta syntaxe est un peu bizare quand meme ! t es sur que tu fais du C++ la ?
0
en fait, je debute donc je sais pas trop comment faire. c'est pas tout a fait le programme que j'avais fais au debut, mais a force de corriger, j'ai reussi a n'avoir plus qu'une seule erreur avec ce programme là.

en gros voilà ce que c'est sensé faire:
saisir un entier a et un entier b. si a est egal à b, l'afficher et calculer c=a+b. sinon, voir si a est < à b est l'afficher, et calculer c=a+b. puis afficher "a+b est égal à" C.

et ils disent: on affichera la valeur de C, c'est pour ca que j'ai mis 22, en pensant que ce serait toujours ce resultat, et que donc a et b peuvent avoir une valeur de 11 si ils sont egaux, sinon, 10 et 12 ou 2 et 20, etc...

est ce que vous pensez que ce que j'ai fait pourrait me donner a peu pres ce que je recherche?
merci d'avance
0
merci je vais aller voir
0

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

Posez votre question
bon ben j'ai lu le tutorial, j'ai lu mon cours au moins 5 ou 6 fois, j'ai toujours l'impression d'avoir tout compris, j'ai changé mon programme au moins une vingtaine de fois, j'ai reussi assez souvent a ce qu'il me donne zero erreur, jusque là tout va bien.

par contre meme avec zero erreur il fait pas ce que je veux qu'il fasse. j'en ai marre, un petit probleme comme ca j'arrive pas le faire, je suis vraiment nul.
et j'en ai un encore pire a faire apres, je sais comment je vais faire pour m'en sortir.

#include <iostream>
int a=1,b=1 ;
int c(void)
{
return a+b;
}
main()
{
cout<<"entrez un nombre a\n";
cin>>"a";
cout<<"entrez 1 nombre b\n";
cin>>"b";
cout<<"a+b est égal à"<<"a+b"<<endl;
#if(a == b)
cout<<"a est égal à b"<<endl;
#elif(a < b)
cout<<"a est inférieur à b"<<endl;
#else
cout<<"a est superieur à b"<<endl;
#endif
cin>>"c==a+b";
cout<<"a+b est égal à"<<endl;
return 0;
}

voilà où j'en suis arrivé après maintes modifications.
le programme me met zero erreur.
je l'execute
il me demande un nombre a
je met au hasard un nombre, genre 2 par exemple.
j'appuie sur entrée
et là au lieu de me demander un 2e nombre , il m'envoie le message, comme quoi mon programme a rencontré une erreur, et que microsoft peut m'envoyer un rapport d'erreur ou je ne sais quoi...
:-(

s'il vous plait aidez moi...
0
Salut, ton prgm me mets des milliards d'erreurs à moi !! Lle code ci-dessous marche.

#include <iostream>
using namespace std;

int a=1,b=1 ;
int c(void)
{
return a+b;
}
main()
{
cout<<"entrez un nombre a\n";
cin>>a;
cout<<"entrez 1 nombre b\n";
cin>>b;
cout<<"a+b est égal à"<<a+b<<endl;
#if(a == b)
cout<<"a est égal à b"<<endl;
#elif(a < b)
cout<<"a est inférieur à b"<<endl;
#else
cout<<"a est superieur à b"<<endl;
#endif
//cin>>c==a+b;
//cout<<"a+b est égal à"<<endl;
return 0;
}

Je t'ai mis les deux lignes en commentaires car je ne c'est pas ce que tu veux faire. Tu as déjà calculé plus haut la somme a+b.
A la rigueur tu peux faire : int c=a+b; cout<<c<<endl;

Mais je n'aime pas du tout les #if... #elif... #else
fait plutot des :

if(condition)
{
blabla
}
else if{condition}
{
blabla
}
else
{
blabla
}

Mais rassure toi, on s'est tous prix la tête sur des exos "très simples". Mais il faut passer par cette étape.

Bon courage... et les forums sont là pour ca !
0
merci beaucoup, je vais essayer, et je vous tiendrais au courant
:-)
0
en effet, ca marche... mieux!
dejà apres m'avoir demander un nombre il m'en demande un deuxieme, c'est deja ca.
en fait apres ca, le programme, est sensé dire si a est egal, superieur ou inferieur à b. puis calculer c qui est égal à a+b.

et c'est ecrit sur l'exercice "on affichera la valeur de c" donc je suis en train de me demander si je ne dois pas determiner a l'avance une valeur pour c qui ferait que c serait une constante...

à moins que cela veuille dire que c'est le programme qui doit afficher la valeur de c (?)
0
Attention, il existe une énorme différence entre ''=='' et '='

Le premier est un test d'égalité. (a == b) est une expression boolénne qui vaut soit 'VRAI' soit 'FAUX' (true et false sont les mot-clefs consacré, en C++).

a=b est une affection, a prend la valeur de b.

<b>if ( a==b ) {
cout << "a est égal à b" << endl;
} else {
cout << "a est différent b" << endl;
}</b>

permet de faire le test (en remplaçant ensuite '==' par '>' et '<' )

Puis
<b>c = a + b;</b>
permet de calculer c.

Par contre, attention, tu peut aussi écrire

<b>if (a=b) {
// code A
} else {
// code B
}</b>

qui compilera (avec éventuellement un warning), et éxécutera le code A si b est différent de 0, et le code B si b égale 0.
Car en interne, une valeur booléenne c'est 0 pour faux et toute les autres valeurs signifie vrai.
0
PS : désolé pour les couples <b> ... </b>, je voulais mettre en gras...
0