Per esempio c'è la funzione somma polinomio che prende come parametri due puntatori di polinomi e che ritorna un puntatore verso un polinomio somma di due ricevuti in parametro. Io ho fatto così, secondo voi è un buon modo di procedere?
Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int deg;
int *coef;
}
polynome;
polynome * new_polynome(int n)
{
int i;
polynome *new;
new=malloc(sizeof(polynome *));
new->deg=n;
new->coef=malloc(n*sizeof(new->coef));
for(i=0;i<n;i++)
{
new->coef[i]=1;
}
return new;
}
void print_polynome(polynome *p)
{
int i;
for(i=0;i<(p->deg);i++)
{
printf(" %d x^%d ",p->coef[i],i);
}
printf("\n");
}
polynome * addition_polynome(polynome *p1,polynome *p2)
{
polynome *somme=malloc(sizeof(polynome *));
int i;
if((p1->deg)>(p2->deg))
somme->deg=p1->deg;
else
somme->deg=p2->deg;
somme->coef=malloc(somme->deg*sizeof(somme->coef));
for(i=0;i<somme->deg;i++)
{
somme->coef[i]=p1->coef[i]+p2->coef[i];
}
return somme;
}
int main()
{
polynome *pPtr1;
polynome *pPtr2;
polynome *somma;
pPtr1=new_polynome(4);
pPtr2=new_polynome(6);
somma=addition_polynome(pPtr1,pPtr2);
print_polynome(somma);
return 0;
}
