evo izgleda da sam napravio napokon da radi kako treba.
zbrajanje sam napravio ovako
Code:
PPolinom SumPolinoms(PPolinom p1, PPolinom p2)
{
PPolinom novi = new Polinom;
novi->p = new Grade[p1->max_grade+p2->max_grade];
novi->max_grade = p1->max_grade+p2->max_grade;
int i,j,z;
//kopiranje oba u jedan radi lakseg zbrajanja
for(i=0; i<p1->max_grade; i++)
{
novi->p[i].c=p1->p[i].c;
novi->p[i].e=p1->p[i].e;
}
z=i;
for(i=0; i<p2->max_grade; i++,z++)
{
novi->p[z].c=p2->p[i].c;
novi->p[z].e=p2->p[i].e;
}
/* pratimo koliko ih je zbrojeno
kako bi znali koliko moramo
tocno zauzeti za temp*/
int br_zbrojenih=0;
for(i=0; i < p1->max_grade+p2->max_grade;i++)
for(j=i+1; j < p1->max_grade+p2->max_grade;j++)
if(novi->p[i].e==novi->p[j].e)
{
novi->p[i].c = novi->p[i].c + novi->p[j].c;
novi->p[j].c = NULL; //postavi ga na NULL kako bi ga kasnije izbjegao prilikom
// kopiranja u temp;
br_zbrojenih++; //zbrojeni
}
/*deklariramo novi polino u kojeg
cemo kopirati samo one elemente koji
nam trebaju, bez onih sto su vec zbrojeni*/
PPolinom temp = new Polinom;
temp->p = new Grade[(p1->max_grade+p2->max_grade)-br_zbrojenih];
temp->max_grade = (p1->max_grade+p2->max_grade)-br_zbrojenih;
for(i=0,z=0; i<(p1->max_grade+p2->max_grade);i++)
if (novi->p[i].c != 0)
{
temp->p[z].c = novi->p[i].c;
temp->p[z].e = novi->p[i].e;
z++;
}
return temp;
}
A mnozenje jednostravno ih pomnozio svaki sa svakim u jedan polinom, zatim deklarirao nova dva polinoma i pola iz novog kopirao u jedan a drugu polovicu u drugi polinom i onda jednostavno opet pozvao da mi ih zbroji da dobijem konacni rezultat mnozenja! evo kod za mnozenje
Code:
PPolinom MulPolinoms(PPolinom p1, PPolinom p2)
{
int i,j=0,z=0;
PPolinom novi = new Polinom;
novi->p = new Grade[p1->max_grade * p2->max_grade];
novi->max_grade = p1->max_grade * p2->max_grade;
//MNOZIMO IH SVAKI SA SVAKIM
for(i=0; i<p2->max_grade; i++)
for (j=0; j< p1->max_grade; j++)
{
novi->p[z].c = p1->p[i].c * p2->p[j].c;
novi->p[z].e = p1->p[i].e + p2->p[j].e;
z++;
}
PPolinom prvi = new Polinom;
prvi->p = new Grade[p1->max_grade];
prvi->max_grade = p1->max_grade;
PPolinom drugi = new Polinom;
drugi->p = new Grade[p2->max_grade];
drugi->max_grade = p2->max_grade;
/*KOPIRAMO IH U ZASEBNE POLINOME*/
for(i=0; i < p1->max_grade; i++)
{
prvi->p[i].c = novi->p[i].c;
prvi->p[i].e = novi->p[i].e;
}
z=i;
for(i=0; i < p2->max_grade; i++,z++)
{
drugi->p[i].c = novi->p[z].c;
drugi->p[i].e = novi->p[z].e;
}
/* i zatim jednostavno pozovemo
funkciju sumpolinoms*/
novi=SumPolinoms(prvi,drugi);
return novi;
}
*edited*
ne radi mnozenje nakon dodavanja jos elemenata u neki polinom u mainu! :-(
davs