/*1.已知一个有理数类zrf_Ratio,包含私有数据成员:分子num和分母den, 以及公有函数成员 friend ostream& operator<<(ostream& ostr, const zrf_Ratio& r) { return ostr << r.num << "/" << r.den;} 请补充该类的构造函数,并实现如下的操作符重载形式: friend zrf_Ratio operator-(const zrf_Ratio&); friend zrf_Ratio operator+(const zrf_Ratio&, const zrf_Ratio&); friend zrf_Ratio operator-(const zrf_Ratio&, const zrf_Ratio&); friend zrf_Ratio operator*(const zrf_Ratio&, const zrf_Ratio&); friend zrf_Ratio operator/(const zrf_Ratio&, const zrf_Ratio&);*/
#include
using namespace std;
int f1()
{ int m,n,t;
cout<<"请输入两个数:";
cin>>m>>n;
while(n!=0)
{ t=m%n; m=n; n=t; }
return m;
}
class zrf_Ratio
{
public:
friend ostream& operator<<(ostream& ostr, const zrf_Ratio& r)
{ return ostr << r.num << "/" << r.den;}
friend zrf_Ratio operator-(const zrf_Ratio& r0 )
{return zrf_Ratio(-r0.num,r0.den);}
friend zrf_Ratio operator+(const zrf_Ratio& r1, const zrf_Ratio& r2)
{ int a=f1(r1.den,r2.den); return zrf_Ratio((r1.num*r2.den+r2.num*r1.den)/d,r1.den*r2.den/d); }
friend zrf_Ratio operator-(const zrf_Ratio& r1, const zrf_Ratio& r2)
{ int a=f1(r1.den,r2.den); return zrf_Ratio((r1.num*r2.den-r2.num*r1.den)/d,r1.den*r2.den/d); }
friend zrf_Ratio operator*(const zrf_Ratio& r1, const zrf_Ratio& r2)
{ int a=f1(r1.den,r2.den); while(a!=1) { r1.num*r2.num/=d; r1.den*r2.den/=d; d=f1(r1.num*r2.num,r1.den*r2.den); } return zrf_Ratio(r1.num*r2.num,r1.den*r2.den); }
friend zrf_Ratio operator/(const zrf_Ratio& r1, const zrf_Ratio& r2)
{return r1*zrf_Ratio(r2.num,r2.den);}
private:
int num,den;
};
int mian()
{
zrf_Ratio m(3,7);
zrf_Ratio n(4,9);
p(-a);
p(a+b);
p(a-b);
p(a*b);
p(a/b);
return 0; }
就是这个题目,这代码肯定有好多错误,希望前辈可以耐心指教,谢谢