ragazzi sono ancora alle prese con un programma in c di cui ovviamente non tutto fila liscio, arrivo subito al succo: il programma calcola i valori che la funzione assume in alcuni punti di un'intervallo da noi fissato. Questi punti vengono calcolati tramite il passo ( con relativa istruzione ) e credo sia proprio lì il problema dato che se metto l'intervallo [2,10] con numero di punti =2, lui dovrebbe calcolarmi la funzione per x=2 e x=10. Nel caso di x=2 calcola bene, mentre per x=10 me lo calcola con x=5...Riuscite a capire il perchè? so che è difficile...ma se potete darmi una mano vi sarò grato. Ecco il programma:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
float campionatura(float a,float b,float f_campionata[],float vetcoef[],int n,int grado);
float f(float x,float vetcoef[],int grado);
int main()
{
float a,b,f_campionata[100],vetcoef[100];
int n,i,grado;
printf("Inserisci il primo estremo dell'intervallo \n");
scanf("%f",&a);
printf("Inserisci il secondo estremo dell'intervallo \n");
scanf("%f",&b);
printf("Inserisci il numero di punti \n");
scanf("%d",&n);
printf("Inserire il grado del polinomio \n");
scanf("%d",&grado);
for(i=0;i<=grado;i++)
{vetcoef[i]=0;
}
for(i=grado;i>=0;i--)
{printf("Inserire il coefficiente di grado %d\n",i);
scanf("%f",&vetcoef[i]);
}
campionatura (a,b,f_campionata,vetcoef,n,grado);
printf("I valori che la funzione assume nei punti dell'intervallo sono:");
for(i=1;i<=n;i++)
{ printf("%f\n",f_campionata[i]);
}
system("PAUSE");
return 0;
}
float campionatura(float a,float b,float f_campionata[],float vetcoef[],int n,int grado)
{ int i;
float passo,x;
passo=(b-a)/(n-1);
x=a;
for(i=1;i<=n;i++)
{
f_campionata[i]=f(x,vetcoef,grado);
x=x+passo;
}
system("PAUSE");
return 0;
}
float f(float x,float vetcoef[],int grado)
{ float valpol;
int j,h;
valpol=0;
valpol=valpol+vetcoef[0];
for(h=1;h<=grado;h++)
{for(j=1;j<h;j++)
{x=x*x;
}
valpol=(x*vetcoef[h])+valpol;
}
system("PAUSE");
printf("Il valore del polinomio è %f\n",valpol);
return valpol;
}

