#include<iostream>
using namespace std;
class Term
{
public:
Term(int c,int e);
Term(int c,int e,Term *nxt);
Term* InsertAfter(int c,int e);
private:
int coef;
int exp;
Term *link;
friend ostream &operator<<(ostream &,const Term &);
friend class Polynominal;
};
Term::Term(int c,int e):coef(c),exp(e)
{
link=0;
}
Term::Term(int c,int e,Term *nxt):coef(c),exp(e)
{
link=nxt;
}
Term*Term::InsertAfter(int c,int e)
{
link=new Term(c,e,link);
return link;
}
//Term类的定义
class Polynominal
{
public:
Polynominal();
~Polynominal();
void AddTerms(istream& in);
void Output(ostream& out) const;
void PolyMul(Polynominal& r);
private:
Term* theList;
friend ostream & operator <<(ostream &,const Polynominal &);
friend istream & operator >>(istream &,const Polynominal &);
};
Polynominal::Polynominal() //构造函数
{
theList=new Term(0,-1);
theList->link=theList;
}
Polynominal::~Polynominal() //析构构函数
{
Term* p=theList->link;
while(p!=theList)
{
theList->link=p->link;
delete p;
p=theList->link;
}
delete theList;
}
void Polynominal::AddTerms(istream & in)
{
Term *q=theList;
int c ,e;
for(;;)
{
cout<<"input a term(coef,exp):\n"<<endl;
cin>>c>>e;
if(e<0) break; //当输入指数小于0时,构造过程结束
q=q->InsertAfter(c,e);
}
}
void Polynominal::Output(ostream& out)const //多项式的输出
{
int first=1;Term *p=theList->link;
cout<<"the Polynominal is:\n"<<endl;
for(;p!=theList;p=p->link)
{
if(!first&&(p->coef>0)) out<<"+";
first=0;
out<<*p;
}
cout<<"\n"<<endl;
}
ostream& operator <<(ostream& out,const Polynominal &x) //友元函数
{
x.Output(out); return out;
}
istream& operator >>(istream& in,Polynominal &x)
{
x.AddTerms(in); return in;
}
void main() //测试用例
{
Polynominal first,second;
cin>>first;
cout<<first;
cin>>second;
cout<<second;
}
--------------------Configuration: Polynominal - Win32 Debug--------------------
Compiling...
Polynominal.cpp
D:\编程练习\polynominal\Polynominal.cpp(125) : error C2593: 'operator <<' is ambiguous
D:\编程练习\polynominal\Polynominal.cpp(127) : error C2593: 'operator <<' is ambiguous
Error executing cl.exe.
Polynominal.exe - 2 error(s), 0 warning(s)
c++,多项式的输入输出,什么问题啊?帮我调通,谢谢了
答案:2 悬赏:0 手机版
解决时间 2021-02-01 05:54
- 提问者网友:星軌
- 2021-01-31 13:34
最佳答案
- 五星知识达人网友:不想翻身的咸鱼
- 2021-01-31 14:02
这样能行,不知道为什么那样不行
#include<iostream>
using namespace std;
class Term
{
public:
Term(int c,int e);
Term(int c,int e,Term *nxt);
Term* InsertAfter(int c,int e);
private:
int coef;
int exp;
Term *link;
friend ostream &operator<<(ostream &out,const Term &val)
{
if(val.coef==0) return out;
out<<val.coef;
switch(val.exp)
{
case 0:break;
case 1:out<<"X";break;
default:out<<"X^"<<val.exp;break;
}
return out;
}
friend class Polynominal;
};
Term::Term(int c,int e):coef(c),exp(e)
{
link=0;
}
Term::Term(int c,int e,Term *nxt):coef(c),exp(e)
{
link=nxt;
}
Term*Term::InsertAfter(int c,int e)
{
link=new Term(c,e,link);
return link;
}
//Term类的定义
class Polynominal
{
public:
Polynominal();
~Polynominal();
void AddTerms(istream& in);
void Output(ostream& out) const;
void PolyMul(Polynominal& r);
friend ostream& operator <<(ostream& out,const Polynominal &x) //友元函数
{
x.Output(out); return out;
}
friend istream& operator >>(istream& in,Polynominal &x)
{
x.AddTerms(in); return in;
}
private:
Term* theList;
};
Polynominal::Polynominal() //构造函数
{
theList=new Term(0,-1);
theList->link=theList;
}
Polynominal::~Polynominal() //析构构函数
{
Term* p=theList->link;
while(p!=theList)
{
theList->link=p->link;
delete p;
p=theList->link;
}
delete theList;
}
void Polynominal::AddTerms(istream & in)
{
Term *q=theList;
int c ,e;
for(;;)
{
cout<<"input a term(coef,exp):\n"<<endl;
cin>>c>>e;
if(e<0) break; //当输入指数小于0时,构造过程结束
q=q->InsertAfter(c,e);
}
}
void Polynominal::Output(ostream& out)const //多项式的输出
{
int first=1;Term *p=theList->link;
cout<<"the Polynominal is:\n"<<endl;
for(;p!=theList;p=p->link)
{
if(!first&&(p->coef>0)) out<<"+";
first=0;
out<<*p;
}
cout<<"\n"<<endl;
}
void main() //测试用例
{
Polynominal first,second;
cin>>first;
cout<<first;
cin>>second;
cout<<second;
}
#include<iostream>
using namespace std;
class Term
{
public:
Term(int c,int e);
Term(int c,int e,Term *nxt);
Term* InsertAfter(int c,int e);
private:
int coef;
int exp;
Term *link;
friend ostream &operator<<(ostream &out,const Term &val)
{
if(val.coef==0) return out;
out<<val.coef;
switch(val.exp)
{
case 0:break;
case 1:out<<"X";break;
default:out<<"X^"<<val.exp;break;
}
return out;
}
friend class Polynominal;
};
Term::Term(int c,int e):coef(c),exp(e)
{
link=0;
}
Term::Term(int c,int e,Term *nxt):coef(c),exp(e)
{
link=nxt;
}
Term*Term::InsertAfter(int c,int e)
{
link=new Term(c,e,link);
return link;
}
//Term类的定义
class Polynominal
{
public:
Polynominal();
~Polynominal();
void AddTerms(istream& in);
void Output(ostream& out) const;
void PolyMul(Polynominal& r);
friend ostream& operator <<(ostream& out,const Polynominal &x) //友元函数
{
x.Output(out); return out;
}
friend istream& operator >>(istream& in,Polynominal &x)
{
x.AddTerms(in); return in;
}
private:
Term* theList;
};
Polynominal::Polynominal() //构造函数
{
theList=new Term(0,-1);
theList->link=theList;
}
Polynominal::~Polynominal() //析构构函数
{
Term* p=theList->link;
while(p!=theList)
{
theList->link=p->link;
delete p;
p=theList->link;
}
delete theList;
}
void Polynominal::AddTerms(istream & in)
{
Term *q=theList;
int c ,e;
for(;;)
{
cout<<"input a term(coef,exp):\n"<<endl;
cin>>c>>e;
if(e<0) break; //当输入指数小于0时,构造过程结束
q=q->InsertAfter(c,e);
}
}
void Polynominal::Output(ostream& out)const //多项式的输出
{
int first=1;Term *p=theList->link;
cout<<"the Polynominal is:\n"<<endl;
for(;p!=theList;p=p->link)
{
if(!first&&(p->coef>0)) out<<"+";
first=0;
out<<*p;
}
cout<<"\n"<<endl;
}
void main() //测试用例
{
Polynominal first,second;
cin>>first;
cout<<first;
cin>>second;
cout<<second;
}
全部回答
- 1楼网友:胯下狙击手
- 2021-01-31 15:37
#include<iostream>
using namespace std;
class Term
{
public:
Term(){};
Term(int c,int e);
Term(int c,int e,Term *nxt);
Term* InsertAfter(int c,int e);
void Output(ostream& out) const;
private:
int coef;
int exp;
Term *link;
friend ostream &operator<<(ostream &,const Term &);
friend class Polynominal;
};
Term::Term(int c,int e):coef(c),exp(e)
{
link=0;
}
Term::Term(int c,int e,Term *nxt):coef(c),exp(e)
{
link=nxt;
}
Term*Term::InsertAfter(int c,int e)
{
link=new Term(c,e,link);
return link;
}
//Term类的定义
class Polynominal
{
public:
Polynominal();
~Polynominal();
void AddTerms(istream& in);
void Output(ostream& out) const;
void PolyMul(Polynominal& r);
private:
Term* theList;
friend ostream & operator <<(ostream &,const Polynominal &);
friend istream & operator >>(istream &, Polynominal &);
};
Polynominal::Polynominal() //构造函数
{
theList=new Term(0,-1);
theList->link=theList;
}
Polynominal::~Polynominal() //析构构函数
{
Term* p=theList->link;
while(p!=theList)
{
theList->link=p->link;
delete p;
p=theList->link;
}
delete theList;
}
void Polynominal::AddTerms(istream & in)
{
Term *q=theList;
int c ,e;
for(;;)
{
cout<<"input a term(coef,exp):\n"<<endl;
cin>>c>>e;
if(e<0) break; //当输入指数小于0时,构造过程结束
q=q->InsertAfter(c,e);
}
}
void Term::Output(ostream& out)const
{
out << coef << " " << exp;
}
void Polynominal::Output(ostream& out)const //多项式的输出
{
int first=1;Term *p=theList->link;
cout<<"the Polynominal is:\n"<<endl;
for(;p!=theList;p=p->link)
{
if(!first&&(p->coef>0)) out<<"+";
first=0;
out<<*p;
}
cout<<"\n"<<endl;
}
ostream& operator <<(ostream& out,const Term &t) //友元函数
{
t.Output(out);
return out;
}
ostream& operator <<(ostream& out,const Polynominal &x) //友元函数
{
x.Output(out); return out;
}
istream& operator >>(istream& in, Polynominal &x)
{
x.AddTerms(in); return in;
}
void main() //测试用例
{
Polynominal first,second;
cin>>first;
cout<<first;
cin>>second;
cout<<second;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯