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

📄 polynomial.h

📁 用C++实现多项式处理
💻 H
字号:
//#ifndef polynomial
//#define polynomial
#include"term.h"
#include"list.h"
#include"link.h"
#include"listIterator.h"
class Polynomial{
public:
	Polynomial();
	Polynomial(const Polynomial &);
	Polynomial(Term & t);
	Polynomial(int one,int con);
	Polynomial(int two,int one,int con);
	Polynomial & operator=(Polynomial & right);
	Polynomial & operator+=(Polynomial & right);
	Polynomial & operator*=(Term &);
private:
	List<Term> exp;
	friend ostream & operator<<(ostream &,Polynomial &);
	friend Polynomial operator *(Polynomial & left,Term & right);
	friend Polynomial operator *(Polynomial &,Polynomial &);
	friend Polynomial operator +(Polynomial &,Polynomial &);
};
Polynomial::Polynomial(){
}
Polynomial::Polynomial(const Polynomial &p):exp(p.exp){
}
Polynomial::Polynomial(Term & t){
	exp.add(t);
}
Polynomial::Polynomial(int one,int con){
	if(con)
		exp.add(Term (con,0));
	if(one)
		exp.add(Term (one,1));

}
Polynomial::Polynomial(int two,int one,int con){
    if(con)
		exp.add(Term (con,0));
	if(one)
		exp.add(Term (one,1));
	if(two)
		exp.add(Term (two,2));
}
Polynomial & Polynomial::operator=(Polynomial & right){
	listIterator<Term> ritr(right.exp);
	exp.deleteAllValues();
	for(ritr.init();!ritr;++ritr)
		exp.add(ritr());
	return *this;
}
Polynomial & Polynomial::operator+=(Polynomial & right){
	listIterator<Term> litr(exp);
	listIterator<Term> ritr(right.exp);
	for(litr.init(),ritr.init();!litr&&!ritr;++litr){
		while(!ritr&&(litr().power<ritr().power)){
			litr.addBefore(ritr());
			++ritr;
		}
		if(!ritr&&!ritr().power==litr().power){
			litr=litr()+ritr();
			++ritr;
		}
	}
	while(!ritr){
		litr.addAfter(ritr());
		++ritr;
	}
	return *this;
}
Polynomial operator+(Polynomial & left,Polynomial & right){
	Polynomial result(left);
	result +=right;
	return result;
}
Polynomial & Polynomial:: operator*=(Term &right){
	listIterator<Term>itr(exp);
	for(itr.init();!itr;++itr)
		itr=itr()*right;
	return *this;
}
Polynomial operator *(Polynomial & left,Polynomial & right){
	Polynomial result;
	listIterator<Term>itr(left.exp);
	for(itr.init();!itr;++itr)
		result+=right*itr();
	return result;
}
Polynomial operator*( Polynomial & left,Term & right){
	Polynomial result(left);
	result*=right;
	return result;
}
ostream & operator<<(ostream & out,Polynomial &val){
	int first=1;
	listIterator<Term>itr(val.exp);
	for(itr.init();!itr;++itr){
		if(!first)
			cout<<"+";
		first=0;
		out<<itr();
}
	return out;
}
//#endif


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -