PDA

View Full Version : [C] Funzione, puntatori e ciclo for.


salvodel
24-10-2007, 22:52
Volevo chiedere un aiuto sulla scrittura di una equazione da passare ad una altra funzione che mi trovi i valori dei parametri. La funzione per scrive l'equazione ha questa forma(esempio fornito con la routine):

void funzione(double *p, double *x, int m, int n, void *data)
{
register int i;

for(i=0; i<n; ++i)
x[i]=p[1]-p[0]*p[0];
}


Se volessi scrivere una equazione di 10 parametri lo scriverei cosi cioè esplicitando le somme una ad una.


for(i=0; i<n; ++i)
x[i]=p[0]+p[1]+p[2]+.....+p[10];


Se volessi scriverla con un ciclo for come bisognerebbe scriverla? Se la scrivo cosi faccio una accozzaglia di cose con i puntatori?

for(i=0; i<n; ++i)
for(j=0; j<10; ++j)
x[i]=p[j];


Cosa ne pensate? Vi devo dare maggiori informazioni sulla funzione che richiama questa funzione e calcola i parametri p[]?
Grazie mille a tutti.
Ciao

wingman87
25-10-2007, 13:31
Se volessi scrivere una equazione di 10 parametri lo scriverei cosi cioè esplicitando le somme una ad una.


for(i=0; i<n; ++i)
x[i]=p[0]+p[1]+p[2]+.....+p[10];


Se volessi scriverla con un ciclo for come bisognerebbe scriverla? Se la scrivo cosi faccio una accozzaglia di cose con i puntatori?

for(i=0; i<n; ++i)
for(j=0; j<10; ++j)
x[i]=p[j];


C'eri quasi, hai dimenticato un'inizializzazione, una dichiarazione e un +:

for(i=0; i<n; ++i)
x[i]=0;
for(int j=0; j<10; ++j)
x[i]+=p[j];

salvodel
25-10-2007, 16:43
C'eri quasi, hai dimenticato un'inizializzazione, una dichiarazione e un +:

for(i=0; i<n; ++i)
x[i]=0;
for(int j=0; j<10; ++j)
x[i]+=p[j];


Grazie mille per la risposta, volevo pero chiederti un ulteriore chiarimento se hai due minutini:ave: Poiché dovrei fare piu cicli for annidati potresti piegarmi meglio quel +=? So che uguale scrive x = x +1 e x+=1 ma il mio dubbio è: se devo scrivere una funzione del tipo x(ij)=SOMMA(i)SOMMA(j)(p(i)/p(k)) come la scrivo?

for(i=0; i<n; ++i)
for(j=0; j<10; ++j)
for(k=0; k<5; ++k)
x[i]+=p[j]/p[k];


PS
Grazie anche per le correzioni dovute alla mancanza della dichiarazione delle variabili ma il mio problema al momento è piu logico che sintattico. Infatti mi sembra di stare a sommare puntatori su puntatori e che poi quando li passo alla funzione che mi calcola i parametri questa mi vede un solo parametro corrispondente invece alla somma degli indirizzi. Sto a dire un sacco di “corbellerie”?