Salve a tutti,
ho un problema con un metodo che calcola il prodotto tra 2 polinomi di grado N.
Il mio polinomio è formato da un intero che rappresenta il grado del polinomio e da una map<int,Monomio> in cui memorizzo i singoli monomi.
Il risultato della moltiplicazione è corretto,ma nel caso in cui manchi uno dei monomi,mi stampa un'indirizzo di memoria.
Ad esempio: (4x + 2) * (3x^2 + 5x) = (1.05608e-307) + (10x) + (26x^2) + (12x^3).
Il codice è il seguente:
Polinomio operator*(const Polinomio& p1,const Polinomio& p2){
Polinomio ris;
ris.setGrado(p1.gradoPol+p2.gradoPol);
map<int,Monomio>map1=p1.mon;
map<int,Monomio>map2=p2.mon;
map<int,Monomio>::iterator it1;
map<int,Monomio>::iterator it2;
for(int i=0;i<=p1.gradoPol;i++){
Polinomio temp;
it1=map1.find(i);
Monomio m1=(*it1).second;
for(int j=0;j<=p2.gradoPol;j++){
it2=map2.find(j);
Monomio m2=(*it2).second;
Monomio m3=m1*m2;
temp.setMonomio(m3);
}
ris=ris+temp;
}
return ris;
}
Se qualcuno mi sa dare un suggerimento gliene sarei molto grato