c++定义一个分数类,实现加减乘除运算,计算结果要化为最简分数。
1个回答
展开全部
#include <iostream>
using namespace std;
class FenShu
{
public:
FenShu(int Fen_Zi = 1, int Fen_Mu = 1);
void add(const FenShu & a);
void show();
int Fenzi(){return FenZi;}
int Fenmu(){return FenMu;}
int GCD(int FenZi,int FenMu);
friend FenShu operator+(FenShu & a,const FenShu & b);
friend FenShu operator-(FenShu & a,const FenShu & b);
friend FenShu operator*(FenShu & a,const FenShu & b);
friend FenShu operator/(FenShu & a,const FenShu & b);
private:
int FenZi;
int FenMu;
};
FenShu::FenShu(int Fen_Zi, int Fen_Mu):FenZi(Fen_Zi),FenMu(Fen_Mu){}
void FenShu::add(const FenShu & a)
{
FenZi += a.FenZi;
FenMu += a.FenMu;
}
FenShu operator+(FenShu & a,const FenShu & b)
{
a.FenZi += b.FenZi;
a.FenMu += b.FenMu;
return a;
}
FenShu operator-(FenShu & a,const FenShu & b)
{
a.FenZi -= b.FenZi;
a.FenMu -= b.FenMu;
return a;
}
FenShu operator*(FenShu & a,const FenShu & b)
{
a.FenZi *= b.FenZi;
a.FenMu *= b.FenMu;
return a;
}
FenShu operator/(FenShu & a,const FenShu & b)
{
a.FenZi /= b.FenZi;
a.FenMu /= b.FenMu;
return a;
}
int FenShu::GCD(int FenZi,int FenMu)
{
while(FenMu != 0)
{
int temp = FenZi % FenMu;
FenZi = FenMu;
FenMu = temp;
}
return FenZi;
}
void FenShu::show()
{
int Zire = FenZi / GCD(FenZi,FenMu);
int Mure = FenMu / GCD(FenZi,FenMu);
cout << "the result is : " << Zire << " / " << Mure << "\n";
}
int main()
{
FenShu a(6,2);
a.show();
FenShu b;
b.show();
a.add(b);
a.show();
a + b;
a.show();
}
using namespace std;
class FenShu
{
public:
FenShu(int Fen_Zi = 1, int Fen_Mu = 1);
void add(const FenShu & a);
void show();
int Fenzi(){return FenZi;}
int Fenmu(){return FenMu;}
int GCD(int FenZi,int FenMu);
friend FenShu operator+(FenShu & a,const FenShu & b);
friend FenShu operator-(FenShu & a,const FenShu & b);
friend FenShu operator*(FenShu & a,const FenShu & b);
friend FenShu operator/(FenShu & a,const FenShu & b);
private:
int FenZi;
int FenMu;
};
FenShu::FenShu(int Fen_Zi, int Fen_Mu):FenZi(Fen_Zi),FenMu(Fen_Mu){}
void FenShu::add(const FenShu & a)
{
FenZi += a.FenZi;
FenMu += a.FenMu;
}
FenShu operator+(FenShu & a,const FenShu & b)
{
a.FenZi += b.FenZi;
a.FenMu += b.FenMu;
return a;
}
FenShu operator-(FenShu & a,const FenShu & b)
{
a.FenZi -= b.FenZi;
a.FenMu -= b.FenMu;
return a;
}
FenShu operator*(FenShu & a,const FenShu & b)
{
a.FenZi *= b.FenZi;
a.FenMu *= b.FenMu;
return a;
}
FenShu operator/(FenShu & a,const FenShu & b)
{
a.FenZi /= b.FenZi;
a.FenMu /= b.FenMu;
return a;
}
int FenShu::GCD(int FenZi,int FenMu)
{
while(FenMu != 0)
{
int temp = FenZi % FenMu;
FenZi = FenMu;
FenMu = temp;
}
return FenZi;
}
void FenShu::show()
{
int Zire = FenZi / GCD(FenZi,FenMu);
int Mure = FenMu / GCD(FenZi,FenMu);
cout << "the result is : " << Zire << " / " << Mure << "\n";
}
int main()
{
FenShu a(6,2);
a.show();
FenShu b;
b.show();
a.add(b);
a.show();
a + b;
a.show();
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询