多项式存储-1

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]; 
}

在第一次进行编译时出现如图问题,经多方查找仍未发现原因,最终发现多文件要建立项目才能实现,否则就会发生函数为定义的错误。

新建项目后问题解决

运行如图

点赞

发表评论