Probleme de compilation C++

slybest Messages postés 28 Date d'inscription   Statut Membre Dernière intervention   -  
Scalpweb Messages postés 1467 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   43
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   43
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   43
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   43
 
Je me rends pas compte...

ba accroche toi :-)
0