Ciao a tutti!
sono nuovo in questo forum(anche se sono passto di quà varie volte) 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...ttaglioHW&hw=2
{seconda funzione}http://tmancini.di.uniroma1.it/index...ttaglioHW&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 :
codice:
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
codice:
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:
codice:
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.