Bonjour,
Je souhaite effectuer la multiplication de deux polynomes. Pour cela, je veux surcharger l'operateur * sachant que j'ai déjà surcharger les operateurs + et - .
Je dispose d'une classe monome et d'une classe polynome.
mon projet compile mais bloque au moment de l'execution. Je ne vois pas comment modifier ma surcharge * .
class Monome
{
double coeff;
int indice;
public :
Monome(double,int);
double getCoeff () const;
int getIndice () const;
void setCoeff (double);
void setIndice (int);
double operator() (double);
};
class Polynome
{
public :
typedef vector<Monome> idm;
Polynome ();
Polynome (const Polynome &);
int getDegre() const;
idm getMonomes();
void ajouter (Monome &);
void ajouter (Polynome);
void multiplier (double);
void multiplier (Monome &);
double operator() (double);
friend Polynome operator+ (const Polynome &,const Polynome &);
friend Polynome operator- (const Polynome &,const Polynome &);
friend Polynome operator* (const Polynome &,const Polynome &);
private :
idm::iterator Polynome::getMonome(int);
int degre;
idm vmonome;
};
Polynome operator* (const Polynome &p,const Polynome &q)
{
Polynome r;
Polynome::idm monomes_r;
monomes_r = r.getMonomes();
Polynome::idm::iterator itr;
Polynome s;
s=p;
Polynome::idm monomes_p;
monomes_p = s.getMonomes();
Polynome::idm::iterator itp;
Polynome t;
t=q;
Polynome::idm monomes_q;
monomes_q = t.getMonomes();
Polynome::idm::iterator itq;
for (itp = monomes_p.begin(); itp != monomes_p.end(); itp++)
{
for (itq = monomes_q.begin(); itq != monomes_q.end(); itq++)
{
(*itr).setCoeff((*itq).getCoeff()*(*itp).getCoeff());
(*itr).setIndice((*itq).getIndice()+(*itp).getIndice());
}
}
return r;
}
N'hésitez pas pour plus de précision.
Merci d'avance.
