c++ 分数类怎么设计 实现分数的加法

来源:百度知道 编辑:UC知道 时间:2024/05/24 07:15:24
高手帮忙

下面的就行了,不知你懂不
#include "iostream.h"
class fenshu //分数类
{
private:
int a,b;
public:
fenshu(int aa=1,int bb=1) //构造函数
{
a=aa;
b=bb;
}
void display() //输出分数
{
cout<<a<<"/"<<b<<" ";
}
fenshu operator + (fenshu &fl); //声明重载算术运算符“+”
};
int gcd(int x,int y) //计算最大公约数
{
int z=x%y;
while(z)
{x=y;y=z;z=x%y;}//辗转相除
return y;//返回y,即为两者最大公约数
}
fenshu fenshu::operator + (fenshu &f1) //定义重载算术运算符“+”
{
int i=this->b*f1.b; //两分数通分,分母相乘
int r=this-> a*f1.b+b*f1.a; //分子相加
int d=gcd(r,i); //分子分母的最大公约数
return fenshu(r/d,i/d);
}
void main()
{
fenshu f1(2,14),f2(4,14),f3;
f3=f1+f2;
f1.display ();
cout<<"+";
f2.display ();
cout<<"=";
f3.display ();
cou