
展开全部
下面的就行了,不知你懂不
#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 ();
cout<<endl;
}
#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 ();
cout<<endl;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询