J'essaie d'utiliser la surcharge de l'opérateur pour définir les opérations de base (+, -, *, /) pour ma classe polynomiale mais lorsque je lance le programme, elle tombe en panne.Opérations polynomiales utilisant la surcharge de l'opérateur
Update4
Ok. J'ai réussi trois opérations, il ne reste plus que la division.
Voici ce que je suis:
polinom operator*(const polinom& P) const
{
polinom Result;
constIter i, j, lastItem = Result.poly.end();
Iter it1, it2, first, last;
int nr_matches;
for (i = poly.begin() ; i != poly.end(); i++) {
for (j = P.poly.begin(); j != P.poly.end(); j++)
Result.insert(i->coef * j->coef, i->pow + j->pow);
}
Result.poly.sort(SortDescending());
lastItem--;
while (true) {
nr_matches = 0;
for (it1 = Result.poly.begin(); it1 != lastItem; it1++) {
first = it1;
last = it1;
first++;
for (it2 = first; it2 != Result.poly.end(); it2++) {
if (it2->pow == it1->pow) {
it1->coef += it2->coef;
nr_matches++;
}
}
nr_matches++;
do {
last++;
nr_matches--;
} while (nr_matches != 0);
Result.poly.erase(first, last);
}
if (nr_matches == 0)
break;
}
return Result;
}
Il devient tout à fait une autre question après la modification.Je ne comprends pas très bien comment la boucle peut se terminer maintenant que vous ne laissez jamais les itérateurs devenir égaux à la fin. – UncleBens
J'ai compris pourquoi il bloque, c'est parce qu'il insère 3x^2 jusqu'à ce qu'il manque de mémoire et plante mon ordinateur. Maintenant, pour voir comment le réparer. – Vlad
Votre "dernière" fonction ne retourne rien. Cela pourrait causer un problème. –