Bonjour,
J'ai créé une classe Polynome dans laquelle j'ai surchargé les opérateurs + et * pour me permettre d'additionner et multiplier 2 polynômes entre eux. J'essaye également du surchargé l'opérateur += et *+ mais je rencontre des problèmes.
Polynome.cpp:
Polynome.h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 polynome operator+= (polynome P, polynome Q) { float * coeff; int degre = max(P.degre,Q.degre); coeff=new float [degre+1]; for (int i=0;i<degre+1;i++) { if (i<= min(P.degre,Q.degre)) { coeff[i]=P.coeff[i]+Q.coeff[i]; //std::cout << coeff[i] << std::endl; } else { if (P.degre<Q.degre) { coeff[i]=Q.coeff[i]; } else { coeff[i]=P.coeff[i]; } } } polynome Result(degre,coeff); // fait appel à un constructeur créant un polynome à partir des paramètres Int et *Flaot delete[] coeff; return Result; }
main.cpp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 friend polynome operator+=(polynome,polynome);
Ce que je ne comprends pas c'est pourquoi j'obtiens le bon résultat avec la partie 1 du main.cpp et pas avec la partie 2. Le P.Eval qui est une méthode de classe pour évaluer le polynome en une valeur ne me donne pas la même valeur que celle de la partie 1...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 cout << "(P+=Q)(2.1)= " << (P+=Q).Eval(2.1) << "\n" << endl; // partie 1 P+=Q; // partie 2 cout << P.Eval(2.1) << endl;
Quelques peut-il m'aider?
Je débute en POO et la gymnastique mentale est loin d'être simple.
Merci d'avance
Neodole
Partager