c++上机实验
第一次:
对如下多项式(Polynomial)编写类定义:
Polynomial=a0+a1x+a2x^2+...+anxn^n
其中,n为多项式的次数。完成如下功能:
- 可存储任意大的多项式(提示:可用动态数组实现)。
- 定义构造函数、析构函数、拷贝构造函数。
- 包含一个static成员存储定义的多项式的数量。
- 定义一个成员函数输出多项式。(可参照-x^4-6x^3+5格式输出,注意化简)
- 定义一个成员函数计算多项式的值。
- 写main函数测试类的功能。
- 采用多文件实现。
考虑:哪些成员函数可以声明为const.
由题目可知要存储的数据有a,x,n,多项式的个数(static成员),由于题目要求可存储任意大的多项式,所以用动态数组来顺序存储a0-an
//Polynomial-类定义头文件
#ifndef _POLYNOMIAL_H
#define _POLYNOMIAL_H
#include <iostream>
using namespace std;
class Polynomial{
public:
Polynomial(Polynomial &A);
Polynomial();
void output();//输出多项式
float get_answer();
void get_NoOfPolynomial();
~Polynomial();
private:
int const n;
float x;
float *a; //动态数组头指针
static int NoOfPolynomial;
};
#endif
//Polynomial.cpp-类函数定义
#include "Polynomial.h"
int Polynomial::NoOfPolynomial=0;
Polynomial::Polynomial(Polynomial &A){
n=A.n;
a=new float[A.n+1];
for(int i=0;i<=n;i++)
{
a[i]=A.a[i];
}
NoOfPolynomial++;
}
Polynomial::~Polynomial(){
delete[] a;
NoOfPolynomial--;
}
Polynomial::Polynomial(){
cout<<"please input n:";
cin>>n;
a=new float[n+1];
for(int i=0;i<=n;i++)
{
cout<<"please input a"<<i<<':';
cin>>a[i];
}
NoOfPolynomial++;
}
void Polynomial::output(){
cout<<"Polynomial=";
for(int i=n;i>=0;i--)
{
if(i!=n)
if(a[i]>0)
cout<<'+';
if(a[i]==1)
{
cout<<"X^"<<i;
}
else if(a[i]!=0)
{
cout<<a[i]<<"X^"<<i;
}
}
cout<<endl;
}
float Polynomial::get_answer(){
float data=1;
float answer=a[0];
cout<<"please input x:";
cin>>x;
for(int i=1;i<=n;i++)
{
for(int j=i;j>0;j--)
{
data*=x;
}
answer+=data*a[i];
data=1;
}
cout<<answer<<endl;
return answer;
}
void Polynomial::get_NoOfPolynomial(){{
cout<<NoOfPolynomial<<endl;
}
}
//main.cpp-主函数(测试)
#include <iostream>
#include "Polynomial.h"
int main(){
int num;
Polynomial A;
A.output();
A.get_answer();
A.get_NoOfPolynomial();
Polynomial B(A);
B.output();
B.get_answer();
B.get_NoOfPolynomial();
Polynomial *p;
cout<<"please input how many Polynomial you want to save:";
cin>>num;
p=new Polynomial[num];
}


