PDA

View Full Version : [C] funzione che deriva un polinomio semplice, puntatori


Sibbo
21-01-2011, 02:04
Ciao a tutti!
sono nuovo in questo forum(anche se vio ho sempre seguito con frequenza:D ) e anche nuovo nella programmazione C.
devo fare un homework per l'università che consiste nelllo scrivere due funzioni: una che derivi ripetutamente un polinomio fino ad ottenere 0 e l'altra che faccia il prodotto della derivata 0-esima e della derivata prima ( sempre se possibile).
spero di essermi spiegato bene, altrimenti i link sono questi:
{prima funzione} http://tmancini.di.uniroma1.it/index.php?page=teaching.fondprog.materiale.libreriaesercizi.esercizio&fname=Q.20101219-3.derivative.c&backto=teaching.fondprog.homeworks.dettaglioHW&hw=2
{seconda funzione}http://tmancini.di.uniroma1.it/index.php?page=teaching.fondprog.materiale.libreriaesercizi.esercizio&fname=Q.20101219-4.polyTimesDer.c&backto=teaching.fondprog.homeworks.dettaglioHW&hw=2


le funzioni devono derivare un polinomio semplice, cioè un polinomio di grado k>=0 che è un array di interi di lunghezza k+1, in cui p[i] rappresenta il coefficiente di grado i.
assumendo queste definizioni :
typedef int *poli;
typedef poli *der;


der derivata(poli P, int N, int k);
poli prodDeriv(der d, int k);

ho scritto le due funzioni
der prodDeriv(poli P, int N, int k){

der D;

int r, lato, deg, i;

if(k < 0 || N > k) return;

for(lato = 0; lato < (N+1); lato++){
D[0][lato] = D[1][lato] = P[lato];
}
i = deg = k;
for(r = 1; r < (N+1); r++, k--){
for(lato = 0, i = k; lato < i+1; lato++){
D[r][lato] *= deg;
deg--;
}

}

return D;
}


poli prodDeriv(der D, int k){

int deg = k + (--k);
int elem = 2 * k;
poly R[elem];
int pos, i, j;

for(i = 0; i <= elem; i++) R[i] = 0;

for(i = 0; i < k+1; i++){
for(j = 0; j < k; j++){
pos = deg - ((k-i) + (k-1) - j);
R[pos] += D[0][i] * D[1][j];
}
}

return *R;
}
ora il mio problema è che non riesco a scrivere un main adatto che mi permetta di provare le funzioni.
ho provato in tutti i modi ma dato che non sono bravo con i puntatori non ci sono riuscito:mc: ; questo è il main che ho scritto:
int main(){

poly P;
int A[4];
int N=3;
int k=3;

*P[4] = {4, 2, 7, 5}

derivata(P, N, k);
prodDeriv(&D, k);


return 0;
}

spero di essere stato abbastanza chiaro ed esauriente, vi prego di aiutarmi se potete.
qualsiasi commento è ben gradito.
Ciao!
Gabriele
p.s. spero di non aver sbagliato nulla nello scrivere e collocare il messaggio, in caso negativo mi scuso anticipatamente.