编写C++语言程序通过运算符重载,实现分数的有关运算(加减乘除,大小比较,输入输出)

 我来答
sun_siliang
2011-07-03 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:5537万
展开全部
#include <iostream>
using namespace std;
class Fraction;
istream& operator>>(istream&,Fraction&);
ostream& operator<<(ostream&,Fraction&);
class Fraction{
int nume;
int deno;
public:
friend istream& operator>>(istream&,Fraction&);
friend ostream& operator<<(ostream&,Fraction&);
void FracSimp()
{
int m,n,r;
m=nume;n=deno;
r=m%n;
while(r)
{
m=n;n=r;
r=m%n;
}
if(n!=1)
{
nume/=n;
deno /=n;
}
}
Fraction():nume(0),deno(1){}
Fraction(int n,int d):nume(n),deno(d){FracSimp();}
void InNume(int n){nume=n;}
void InDeno(int d){deno=d;}
int GetNume(){return nume;}
int GetDeno(){return deno;}
Fraction operator+(Fraction&x)
{
Fraction c;
c.nume=nume*x.deno+x.nume*deno;
c.deno=deno*x.deno ;
return c;
}
bool operator==(Fraction& x)
{
return nume*x.deno==x.nume*deno;
}
Fraction& operator++()
{
nume+=deno;
return *this;
}
Fraction operator++(int)
{
Fraction y;
y=*this;
nume+=deno;
return y;
}
bool operator>(Fraction& x)
{
return nume*x.deno>deno*x.nume;
}
};
istream& operator>>(istream& istr,Fraction& x)
{
char ch;
cout<<"Input a fraction:";
istr>>x.nume>>ch>>x.deno;
if(x.deno ==0)
{
cerr<<"分母不得为零!"<<endl;
exit(1);
}
x.FracSimp ();
return istr;
}
ostream& operator<<(ostream& ostr,Fraction& x)
{
cout<<x.nume<<'/'<<x.deno<<endl;
return ostr;
}
int main(void)
{
Fraction a(5,8),b,c;
cin>>b;
b++;
c=a+b;
cout<<a;
cout<<b;
cout<<c;
cout<<(a>b?1:0)<<endl;
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式