问题及代码:
/*。
*Copyright(c)2014,烟台大学计算机学院
*All right reserved,
*文件名:test.cpp
*作者:liu_feng_zi_
*完成日期:2015年6月23日
*版本号:v1.0
*问题描述:分数类的四则运算
*输入描述:
*程序输出:
*/
#include <iostream>
using namespace std;
class Fraction
{
private:
int z,m;
public:
Fraction():z(0),m(0) {}
friend Fraction operator -(Fraction&,Fraction&);
bool operator ==(int d);
friend Fraction operator /(Fraction&,Fraction&);
friend istream& operator>>(istream&input,Fraction&f);
friend int simple(int x,int y);
void output();
};
Fraction operator -(Fraction&ff1,Fraction&ff2)
{
Fraction f;
int a;
int simple(int x,int y);
f.z=ff1.z*ff2.m-ff1.m*ff2.z;
f.m=ff1.m*ff2.m;
a=simple(f.z,f.m);
f.z/=a;
f.m/=a;
return f;
}
Fraction operator /(Fraction&ff1,Fraction&ff2)
{
Fraction f;
int simple(int x,int y);
f.z=ff1.z*ff2.m;
f.m=ff1.m*ff2.z;
int a=simple(f.z,f.m);
f.z/=a;
f.m/=a;
return f;
}
bool Fraction::operator ==(int d)
{
if(z==d||m==d)
return true;
else
return false;
}
int simple(int x,int y)
{
int r;
while(y!=0)
{
r=x%y;
x=y;
y=r;
}
return x;
}
istream&operator >>(istream&input,Fraction&f)
{
input>>f.z>>f.m;
return input;
}
void Fraction::output()
{
if(m!=1)
{
if(m<0)
cout<<-z<<"/"<<-m;
else
cout<<z<<"/"<<m;
}
else
cout<<z;
}
int main()
{
Fraction f1,f2,f3;
while(cin>>f1>>f2)
{
if(f1==0&&f2==0)
break;
f3=f1-f2;
f3.output();
cout<<" ";
f3=f1/f2;
f3.output();
cout<<endl;
}
return 0;
}
运行结果: