|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
[C] Non stampa niente
Ciao a tutti!!!
Ho da fare questo programma... Scrivere una funzione: double eval(double p[], double x, double n) /* n è il grado massimo */ che restituisca il valore del polinomio p valutato in x. Scrivete due versioni della funzione. La prima funzione dovrebbe essere scritta con un semplice approccio immediato, mentre la seconda dovrebbe incorporare la Regola di Horner, che nel caso di polinomi di quinto grado si esprime scrivendo: p(x)= a(0)+x*(a(1)+x*(a(2)+x*(a(3)+x*(a(4)+x*(a(5))))) Io ho provato a fare il primo caso ma non mi stampa nulla. Riporto il codice: Codice:
#include <stdio.h>
#define N 5
double eval(double [], double, int);
double power(double, int);
int i=0;
int main(void){
double x,val;
double p[N+1];
printf("Inserisci x: ");
scanf("%lf", &x);
do {
printf("Inserisci coefficiente: ");
scanf("%lf", &val);
if(val==0)
break;
else
p[i]=val;
} while(++i<N);
printf("Valutazione espressione: %f", eval(p,x,i));
return 0;
}
double power(double x, int y){
double p=1.0;
int ind=1;
for(ind=0; ind<y; ++ind)
p*=x;
return p;
}
double eval(double p[], double x, int n){
int pow=1;
int index=1;
double tmp=p[0];
if((pow>i) || (i==0)){
return tmp;
}
else{
tmp+=p[index]*power(x,pow);
++index;
eval(p,x,pow+1);
}
return tmp;
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
eval(p,x,pow+1);
Trovato l'inghippo era questo che non mi valutava l'espressione, perché il terzo valore della funzione eval si aspetta sempre il grado massimo del polinomio quindi credo che questa funzione non posso farla ricorsiva. Ciao |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:16.



















