I want to add two polynom and set the results on the polynom result I have a problem with the third function please any indications I really need help PS: dynamic declaration! It seems that i don't understand pointers very well so it would be helpful if you suggest to me anything may help me to understand this chapter, please!
typedef struct {
int degree;
float* coeff_tab;
} Polynome;
Polynome lire_polynome()
{
Polynome p;
int i;
printf("Degree du polynome? ");
scanf("%d", &p.degree);
p.coeff_tab = (float*)malloc((unsigned long)(p.degree+1)*sizeof (float));
for(i=0; i<=p.degree; i++)
{
printf("coeff de degree %i: ", i);
scanf("%f", &p.coeff_tab[i]);
}
//free(p.coeff_tab);
return p;
}
void affiche_polynome(Polynome p)
{
int i;
if(p.degree > 1){
printf("%4.2fX^%i ", p.coeff_tab[p.degree], p.degree);
for(i=p.degree-1; i>1; i--){
printf(" + %4.2fX^%i ", p.coeff_tab[i], i);
}
printf(" + %4.2fX + %4.2f\n", p.coeff_tab[1], p.coeff_tab[0]);
} else {
printf(" + %4.2f\n", p.coeff_tab[0]);
}
}
void sommePoly(Polynome p1 , Polynome p2 , Polynome psom)
{
int degsom,deg1,deg2,i=0,j=0,k=0;
float coeffsum,coeff1,coeff2;
Polynome *P,*S ,*Psom;
P=&p1; S=&p2;
degsom=max(p1.degree,p2.degree);
psom.coeff_tab=(float*)malloc((unsigned long)(degsom+1)*sizeof (float));
Psom=&psom;
if( p1.degree == p2.degree)
{
psom.coeff_tab[k]=p1.coeff_tab[i]+p2.coeff_tab[j];
psom.degree=p1.degree;
Psom ++;
i++;j++;k++;
}
else if(p1.degree > p2.degree) {
psom.degree=p1.degree;
psom.coeff_tab[k]=p1.coeff_tab[i];
i++;k++;
}else {
psom.coeff_tab[k]=p2.coeff_tab[j];
psom.degree=p2.degree;
j++;k++;
}
}