📄 polynomial.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 + -