PDA

View Full Version : [C] Problemi con valori reali


Manugal
01-05-2005, 20:05
Ciao a tutti!

Quando faccio operazioni con numeri reali il risultato finale è sempre 0.00000. Non riesco a capire perché. Ad esempio vi posto questa funzione che ho fatto la quale mi restituisce come risultato sempre 0.00000:

double eval(double *p, double x, int n){

double res=0.0;
int i;
for(i=n; i<n; i++){
res+=i*(pow(x,i));
}
return res;
}

Perché facendo una printf del risultato mi da 0? Grazie.

VegetaSSJ5
01-05-2005, 20:22
for (i=n; i<n; i++)...

a cosa ti serve il puntatore a double *p??

Manugal
01-05-2005, 20:49
No infatti mi sa che l'ho scritta male, perché il puntatore a double mi serve per passare un array. quindi il for sarebbe:

for(i=n; i<n; i++){
res+=p[i]*(pow(x,i));

fek
01-05-2005, 20:54
No infatti mi sa che l'ho scritta male, perché il puntatore a double mi serve per passare un array. quindi il for sarebbe:

for(i=n; i<n; i++){
res+=p[i]*(pow(x,i));

Questo ciclo non e' mai eseguito. Parte da n e continua fino a che i e' minore di n, quindi mai.

Prova cosi':



for (i = 0; i < n; ++i)
{
res += p[i] * (pow(x, i));
}

Manugal
01-05-2005, 21:00
Si hai ragione magari ho copiato male, ma quello che volevo sapere perché il risultato dell'espressione è sempre 0. Ma mi è successo anche con altri programmi.

VegetaSSJ5
01-05-2005, 21:05
manugal sai come funziona il ciclo for??

Manugal
01-05-2005, 21:11
Scusami eh però qui non è una questione di ciclo for o no. Ho capito che il ciclo è così infatti ho ricontrollato ed è così. Il problema è che la somma tra numeri reali mi viene sempre zero.

VegetaSSJ5
01-05-2005, 21:17
se inizializzi i=n e poi vai a fare il controllo i<n grazie al ... che ti viene sempre zero! il ciclo for non viene mai eseguito!

Manugal
01-05-2005, 21:24
Ok ora ho capito grazie. Un'ultima cosa... come faccio a dire che un intero positivo può essere scritto come potenze di 2?