求帮忙看一下,double arr[]括号内的值怎么才能改成非具体值,也就是不规定上限呢
const double eps = 1e-15;
double arr[70000000];
int n, k, i;
double m,p,u,y;
double j,sum,v;
double f(double x)
{
y = 0.0;
for (k=n; k>=0; k--)
{
y = y + arr[k] * pow(x,k);
}
return y;
}
int main()
{
printf("The function is like y = [(arr[n])x^n] + [(arr[n-1])x^(n-1)] + [(arr[n-2])x^(n-2)] + ... + [(arr[1])x] + arr[0]\n");
printf("Input n :");
scanf("%d",&n);
if (n<1)
{
printf("n is too little.\n");
return 1;
}
i = n;
for (i=n; i>=0; i--)
{
printf("Input the arr[%d]: ",i);
scanf("%lf", &arr[i]);
}
printf("\nEnter the range[m,p]:");
scanf("%lf%lf",&m,&p);
if (f(m)*f(p)<= 0.0)
{
while (fabs(m-p)>eps)
{
v=(m+p)/2.0;
sum=f(v);
if (fabs(sum)<eps)
{
break;
}
else
{
if(f(v)*f(m)<=0)
{
p=v;
}
else
{
m=v;
}
}
}
j=(m+p)/2.0;
printf("\nThe root x is%lf\n",j);
}
else
{
printf("f(m)*f(p)> 0.0, It can not solve by this method.");
}
return 0;
}
新人求帮助,谢谢了