41、 试建立一个类PP,求出下列多项式的前n项的值。
具体要求如下:
- 私有数据成员
- int n:前若干项的项数。
- double x:存放 x 的值。
- double *p:根据 n 的大小动态申请存放 Pn(x) 前 n 项的数组空间。
- 公有成员函数
- PP(int num,double x1):构造函数,初始化数据成员 n 和 x,使 p 指向动态申请的数组空间。
- ~PP():析构函数,释放 p 指向的动态内存空间。
- double fun(int n1,double x):递归函数,用于求多项式 Pn (x) 的第 n1 项。注意:将递归公式中的 n 用作函数参数。本函数供 process 函数调用。
- void process( ):完成求前 n 项的工作,并将它们存放到 p 指向的动态数组中。
- void show( ):输出 n 和 x,并将前 n 项以每行 4 个数的形式输出到屏幕上。
- 在主函数中完成对该类的测试。先输入 num 和 x1,并定义一个 PP 类的对象 items,用 num 和x1 初始化 items 的成员 n 和 x,调用 items 的成员函数,求出并输出多项式前 num 项的值。
#include<iostream>
#include<iomanip>
using namespace std;
class PP{
int n;
double x,*p;
public:
PP(int num,double x1){
n=num;
x=x1;
if(n) p=new double[n];
}
double fun(int n,double x){
if(n==0)return 1;
if(n==1)return x;
return ((2*n-1)*x*fun(n-1,x)-(n-1)*fun(n-2,x))/n;
}
void process(){
for(int i=0;i<n;i++){
p[i]=fun(i,x);
}
}
void print(){
for(int i=0;i<n;i++){
cout<<"n:"<<i<<",x:"<<p[i]<<'\t';
if((i+1)%4==0)cout<<endl;
}
}
~PP(){
if(p)delete[]p;
}
};
int main(){
int n,x;
cout<<"please input n and x:"<<endl;
cin>>n>>x;
PP items(n,x);
items.process();
items.print();
return 0;
}