Probleme de compilation C++
slybest
Messages postés
28
Statut
Membre
-
Scalpweb Messages postés 1483 Statut Membre -
Scalpweb Messages postés 1483 Statut Membre -
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
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
Configuration: Windows Vista Internet Explorer 7.0
7 réponses
-
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;
} -
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 -
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;
} -
ok merci
tu l'a essayer le programme moi ca me met un truc bizar ca me met perdu apres ca bug -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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. -
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?
-