数据结构(C++描述)编写算法

编写算法以计算在给定各系数和变量x的值时的多项式fn(x)的值,要求时间尽可能少。fn(x)=a0+a1x+a2x^2+a3x^3+……+anx^n

可将求值函数的算法直接写到代码中,从而降低调用函数的时间开销。

#include <stdio.h>

double Value(double x,double eof[],int n) {
int i;
double val = x * eof[n];
for(i = n - 1; i > 0; --i) {
val = x * (eof[i] + val);
}
val += eof[0];
return val;
}

int main() {
double f1[] = {1,2,1};
double f2[] = {3,3,0,-1};
int n1 = sizeof(f1)/sizeof(f1[0]) - 1;
int n2 = sizeof(f2)/sizeof(f2[0]) - 1;
double x = 2;
printf("x = %.2lf   f1(x) = %lf\n",x,Value(x,f1,n1));
printf("x = %.2lf   f2(x) = %lf\n",x,Value(x,f2,n2));
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-10
以下为位码
初始化:
float[] avec={a0,a1,...,an}
float[] xvec={1, x,*,*,...,*};//*为不用初始化,共n+1个元素
float sum=0.0;

循环:
从第三个元素开始遍历xvec,每次都用上一个元素乘以x作为当前元素的值
遍历avec,依次将avec[i]与xvec[i]相乘并累加到sum中

结束:
sum就是fn(x)的值
第2个回答  2013-09-10
#include <iostream>
using namespace std;
struct num{
float a;

int x;

};
int main(){
struct num * sum = new struct num[30];

for(int i = 0;i < 30;i ++){

cin >> sum[i].a;

cin >> sum[i].x;

}

return 0;

}