Probleme de compilation C++

Fermé
slybest Messages postés 28 Date d'inscription mercredi 19 décembre 2007 Statut Membre Dernière intervention 3 mars 2008 - 5 févr. 2008 à 10:23
Scalpweb Messages postés 1467 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 mai 2010 - 5 févr. 2008 à 11:44
Bonjour,
je n'arrive pas a compiler ce programme:

#include <iostream> // classe chaine

#include <conio.h>
using namespace std;
class chaine

{
private:
int longueur; char *adr;

public:

chaine();chaine(char *);chaine(chaine &); //constructeurs

~chaine();

void operator=(chaine &);

int operator==(chaine);

chaine &operator+(chaine);

char &operator[](int);

void affiche();};



chaine::chaine(){longueur = 0;adr = new char[1];} //constructeur1



chaine::chaine(char *texte) // constructeur2

{int i;

for(i=0;texte[i]!='\0';i++);

longueur = i;

adr = new char[longueur+1];

for(i=0;i!=(longueur+1);i++) adr[i] = texte[i];}



void chaine::operator=(chaine &ch)

{ delete adr;

longueur = ch.longueur;

adr = new char[ch.longueur+1];

for(int i=0;i!=(longueur+1);i++)adr[i] = ch.adr[i];

}



int chaine::operator==(chaine ch)

{int i,res=1;

for(i=0;(i!=(longueur+1))&&(res!=0);i++)if(adr[i]!=ch.adr[i])res=0;

return res;}



chaine &chaine::operator+(chaine ch)

{int i;static chaine res;

res.longueur = longueur + ch.longueur;

res.adr = new char[res.longueur+1];

for(i=0;i!=longueur;i++) res.adr[i] = adr[i];

for(i=0;i!=ch.longueur;i++)res.adr[i+longueur] = ch.adr[i];

res.adr[res.longueur]='\0';

return(res);}



char &chaine::operator[](int i)

{static char res='\0';

if(longueur!=0) res = *(adr+i);

return res;}



chaine::~chaine(){delete adr;}



void chaine::affiche()

{int i;

for(i=0;i!=longueur;i++)cout<<adr[i];

cout<<"\n";}



void main(){


chaine a("Bonjour "),b("Maria"),c,d("Bonjour "),e;
if(a==b)cout<<"Gagne !\n";else cout<<"Perdu !\n";

if(a==d)cout<<"Gagne !\n";else cout<<"Perdu !\n";

cout<<"a: ";a.affiche();

cout<<"b: ";b.affiche();

cout<<"d: ";d.affiche();



c = a+b;

cout<<"c: ";c.affiche();



for(int i=0;c[i]!='\0';i++)cout<<c[i];

getch();}

quand je compile sur devc++ ca me met qu'il y a une erreur a la fin a void main() ca me marque must return int
je ne compren pas comment faire pour ke ca marche si qq pouvai m'aider
merci

7 réponses

Scalpweb Messages postés 1467 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 mai 2010 43
5 févr. 2008 à 10:25
Tu essayes de compiler du C++.

La fonction main doit être de type int.

Ca donne :

int main(int argc, char *argv[])
{
... le code ici...
return 0;
}
0
slybest Messages postés 28 Date d'inscription mercredi 19 décembre 2007 Statut Membre Dernière intervention 3 mars 2008 1
5 févr. 2008 à 10:51
mais il faut ke j'y mette ou tu peu me le remplacer sur mon programme stp
parce ke tu voi la ou c fau c la seul partdonnée par l'exercice lol
0
Scalpweb Messages postés 1467 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 mai 2010 43
5 févr. 2008 à 11:04
Ca donnerai ça :


#include <iostream> // classe chaine

#include <conio.h>
using namespace std;
class chaine

{
private:
int longueur; char *adr;

public:

chaine();chaine(char *);chaine(chaine &); //constructeurs

~chaine();

void operator=(chaine &);

int operator==(chaine);

chaine &operator+(chaine);

char &operator[](int);

void affiche();};



chaine::chaine(){longueur = 0;adr = new char[1];} //constructeur1



chaine::chaine(char *texte) // constructeur2

{int i;

for(i=0;texte[i]!='\0';i++);

longueur = i;

adr = new char[longueur+1];

for(i=0;i!=(longueur+1);i++) adr[i] = texte[i];}



void chaine::operator=(chaine &ch)

{ delete adr;

longueur = ch.longueur;

adr = new char[ch.longueur+1];

for(int i=0;i!=(longueur+1);i++)adr[i] = ch.adr[i];

}



int chaine::operator==(chaine ch)

{int i,res=1;

for(i=0;(i!=(longueur+1))&&(res!=0);i++)if(adr[i]!=ch.adr[i])res=0;

return res;}



chaine &chaine::operator+(chaine ch)

{int i;static chaine res;

res.longueur = longueur + ch.longueur;

res.adr = new char[res.longueur+1];

for(i=0;i!=longueur;i++) res.adr[i] = adr[i];

for(i=0;i!=ch.longueur;i++)res.adr[i+longueur] = ch.adr[i];

res.adr[res.longueur]='\0';

return(res);}



char &chaine::operator[](int i)

{static char res='\0';

if(longueur!=0) res = *(adr+i);

return res;}



chaine::~chaine(){delete adr;}



void chaine::affiche()

{int i;

for(i=0;i!=longueur;i++)cout<<adr[i];

cout<<"\n";}



int main(int argc, char *argv[])
{


chaine a("Bonjour "),b("Maria"),c,d("Bonjour "),e;
if(a==b)cout<<"Gagne !\n";else cout<<"Perdu !\n";

if(a==d)cout<<"Gagne !\n";else cout<<"Perdu !\n";

cout<<"a: ";a.affiche();

cout<<"b: ";b.affiche();

cout<<"d: ";d.affiche();



c = a+b;

cout<<"c: ";c.affiche();



for(int i=0;c[i]!='\0';i++)cout<<c[i];

getch();

return 0;
}
0
slybest Messages postés 28 Date d'inscription mercredi 19 décembre 2007 Statut Membre Dernière intervention 3 mars 2008 1
5 févr. 2008 à 11:11
ok merci
tu l'a essayer le programme moi ca me met un truc bizar ca me met perdu apres ca bug
0

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

Posez votre question
Scalpweb Messages postés 1467 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 mai 2010 43
5 févr. 2008 à 11:20
Non j'ai pas compilateur sous la main.

Après j'ai pas assez de temps pour tout regarder mais essayes un peu ça a pas l'air très complexe.

D'après ce que j'ai vu, ça implémente une classe pour gérer les chaines... 9a devrait t'afficher Perdu et Gagne au début et d'autres trucs après.
0
slybest Messages postés 28 Date d'inscription mercredi 19 décembre 2007 Statut Membre Dernière intervention 3 mars 2008 1
5 févr. 2008 à 11:34
ouai c'est aiment complexe je trouve car j'ai trouver des explication un peu partt sur le net mais je f du c++depuis moin de deux moi et je devrai savoir faire ca c qd mm cho pour mon niveau non?
0
Scalpweb Messages postés 1467 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 mai 2010 43
5 févr. 2008 à 11:44
Je me rends pas compte...

ba accroche toi :-)
0