📄 namedpolynomial.hpp
字号:
#ifndef namedpolynomial
#define namedpolynomial
#include<iostream.h>
#include "Strclass.h"
#include "polynomial.hpp"
class namedPolynomial{
private:
String* name;//命名多项式的名字
Polynomial* namedpoly;//命名多项式
public:
namedPolynomial();//Constructor,建立一个未知名字的零多项式
namedPolynomial(const namedPolynomial& p);//Copy Constructor
~namedPolynomial();//Destructor
String& getName();
void setPoly(Polynomial& p);//改变命名多项式的多项式内容
Polynomial getPoly(); //返回多项式
void setName(String& s);
void setName(char* s="UnKnown Polynomial");
//命名多项式的加法
friend namedPolynomial operator +(namedPolynomial& left,namedPolynomial& right);
//命名多项式的减法
friend namedPolynomial operator -(namedPolynomial& left,namedPolynomial& right);
//命名多项式的乘法
friend namedPolynomial operator *(namedPolynomial& left,namedPolynomial& right);
friend ostream& operator <<(ostream& Out,namedPolynomial& p);
friend istream& operator >>(istream& In, namedPolynomial& p);
};
/////////////////////////////////////////////////////////////////////////
namedPolynomial::namedPolynomial()
{
name=new String("Unknown Polynomial");
namedpoly=new Polynomial;
}
/////////////////////////////////////////////////////////////////////////
namedPolynomial::namedPolynomial(const namedPolynomial & p)
{
name=new String(*p.name);
namedpoly=new Polynomial(*p.namedpoly);
}
/////////////////////////////////////////////////////////////////////////
namedPolynomial::~namedPolynomial()
{}
/////////////////////////////////////////////////////////////////////////
String& namedPolynomial::getName()
{
return *name;
}
/////////////////////////////////////////////////////////////////////////
Polynomial namedPolynomial::getPoly()
{
return *namedpoly;
}
/////////////////////////////////////////////////////////////////////////
void namedPolynomial::setPoly(Polynomial& p)
{
*namedpoly=p;
}
/////////////////////////////////////////////////////////////////////////
void namedPolynomial::setName(String &s)
{
*name=s;
}
/////////////////////////////////////////////////////////////////////////
void namedPolynomial::setName(char* s)
{
*name=s;
}
/////////////////////////////////////////////////////////////////////////
namedPolynomial operator +(namedPolynomial& left,namedPolynomial& right)
{
namedPolynomial result;
*result.name=left.getName()+"+"+right.getName();
*result.namedpoly=left.getPoly()+right.getPoly();
return result;
}
/////////////////////////////////////////////////////////////////////////
namedPolynomial operator -(namedPolynomial& left,namedPolynomial& right)
{
namedPolynomial result;
*result.name=left.getName()+"-"+right.getName();
*result.namedpoly=left.getPoly()-right.getPoly();
return result;
}
/////////////////////////////////////////////////////////////////////////
namedPolynomial operator *(namedPolynomial& left,namedPolynomial& right)
{
namedPolynomial result;
*result.name=left.getName()+"*"+right.getName();
*result.namedpoly=left.getPoly()*right.getPoly();
return result;
}
/////////////////////////////////////////////////////////////////////////
ostream& operator <<(ostream& Out,namedPolynomial &p)
{
Out<<*p.name<<"="<<*p.namedpoly;
return Out;
}
/////////////////////////////////////////////////////////////////////////
istream& operator >>(istream& in, namedPolynomial &p)
{
char ch;
char q[100];
int i=0;
//扫描输入的字符,直到输入等号,等号前所输入的字符作为多项式名字
while(in>>ch,ch!='=')
{
//要求多项式的名字只能由数字和字符组成
if(((ch>='a')&&(ch<='z')) || ((ch>='A')&&(ch<='Z')) || ((ch>='0')&&(ch<='9')))
{
q[i]=ch;
i++;
}
else
{
cerr<<"Error!未知字符 '"<<ch<<"' 被输入!"<<endl;
exit(1);
}
}
q[i]='\0';//字符串尾的结束符
p.name=new String(q);
in>>*p.namedpoly;
return in;
}
//////////////////////////////////////////////////////////////////////////
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -