C++面向对象编程题 第41题

该博客介绍了一个C++类PP,用于计算指定x值下多项式Pn(x)的前n项。类PP包含私有数据成员如项数n、x值和动态分配的数组,以及构造函数、析构函数、递归函数和输出函数。通过主函数测试,用户输入项数num和x值,创建PP对象并输出多项式前num项的值。
摘要由CSDN通过智能技术生成

41、 试建立一个类PP,求出下列多项式的前n项的值。
在这里插入图片描述
具体要求如下:

  1. 私有数据成员
  • int n:前若干项的项数。
  • double x:存放 x 的值。
  • double *p:根据 n 的大小动态申请存放 Pn(x) 前 n 项的数组空间。
  1. 公有成员函数
  • 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 个数的形式输出到屏幕上。
  1. 在主函数中完成对该类的测试。先输入 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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值