65,211
社区成员
发帖
与我相关
我的任务
分享
//Polynomial.h
#include"Polynomial.cpp"
class Polynomial
{
public:
Polynomial();//构造函数,返回多项式p(x)=0
int operator!();//若*this是零多项式则返回1,否则返回0
float Coef(int e);//返回*this中指数为e的项的系数
int LeadExp();//返回*this中最大指数
void AddTerm(int e,float c);//将<e,c>加入*this,从而使多项式
//可动态增加项
Polynomial Add(Polynomial poly);//返回多项式*this和poly之和
Polynomial Mult(Polynomial poly);//返回多项式*this与poly之和
void NewTerm(float c,float e);
float Eval(float f);
private:
static term termArray[MaxTerms];
static int free;
int Start,Finish;
};
class Polynomial;//向前声明
class term
{
friend Polynomial;
private:
float coef;
int exp;
};
//其中MaxTerms是常数。由于类中的静态成员声明不构成其定义,还必须在类定义之外定义静态成员如下:
term Polynomial::termArray[MaxTerms];
int Polynomial::free=0;
//Polynomial.cpp
Polynomial Polynomial::Add(Polynomial B)
{ //返回A(x)(即*this)和B(x)之和
Polynomial C;int a=Star;int b=B.Start;C.Start=free;
float c;//a、b为A、B的扫描指针
while(a<=Finsh && b<=B.Finsh)
switch(compare(termArray[a].exp,termArray[b].exp))
{
case '=':c=termArray[a].coef+termArray[b].coef;
if(c)
{
NewTerm(c,termArray[a].exp);//系数和非0,则建立新项
}
a++;b++;
break;
case '<':NewTerm(termArray[b].coef,temArray[b].exp);
b++;
break;
case'>':NewTerm(termArray[a].coef,termArray[a].exp);
a++;
}
}
void Polynomial::NewTerm(float c,int e)
{
if(free>=MaxTerms)
{
cout<<"空间不够"<<endl;
return;
}
termArray[free].coef=c;termArray[free].exp=e;
free++;
}//NewTerm结束
//main.cpp
#include<iostream>
#include "Polynomial.h"
using namespace std;
int main()
{
Polynomial poly;
Polynomial b(poly);
poly.Add(b);
return 0;
}