⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 namedpolynomial.hpp

📁 实现多项式表达式的运算器利用栈实现表达式计算器的模板类;用表达式计算器类和多项式类实现多项式表达式的计算器
💻 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 + -