永发信息网

c++,多项式的输入输出,什么问题啊?帮我调通,谢谢了

答案:2  悬赏:0  手机版
解决时间 2021-02-01 05:54
#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)
最佳答案
这样能行,不知道为什么那样不行

#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(){}; 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; }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
俗承茶馆地址在哪,我要去那里办事
心脏造影有必要做吗
当年茶寮地址在什么地方,想过去办事
惠阳淡水哪里有健身房
白茶属于什么茶前些天去买茶,后来卖茶的人给
晔晔茶室怎么去啊,我要去那办事
起个QQ昵称,开头是:如果、XX
有谁知道啊!美丽的扶绥的歌词
安吉丽娜朱莉 有几个孩子
伍员春茶庄地址在哪,我要去那里办事
福州去哪里好购物,便宜又实惠
常州博物馆茶座地址在什么地方,我要处理点事
帕杰罗正时皮带怎么换需要拆压缩机吗
促进就业小额担保贷款项目计划书和项目的可行
为什么我女友会腰酸
推荐资讯
(根号2除以9-3除以根号98)×2根号2
2.6英寸屏幕的手机 屏幕长宽是多少?
Oracle 删除表中记录 如何释放表及表空间大小
【外国文学赏析】...外国文学艺术作品和作家
你觉不觉得日本动漫其实应该要让“中国人”做
肾综合征出血热发生出血的主要原因是A.血小板
宝宝6个月半可以吃小米粥和大米粥吗
【多媒体的意思】多媒体音频控制器出现问号是
什么嘉庆 宣统 光绪是什么意思还有道观还有咸
《魔方世界》卡顿解决办法
求pp红包助手的下载地址。
冷僻的意思是什么啊?知道的请说下!
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?