定义分数类,使其具有完善的操作(+、-、*、/)。要求:①分数的分子和分母采用int型②分数的运算结果应为最简分数。

冷雨暗香 2009-12-31 08:32:24
求答案!!!!!!!!!!!谢谢啊!!!
...全文
266 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lirg8405 2009-12-31
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
class CScore
{
long int Molecular; //分子
long int Denominator; //分母
public:
CScore(){Molecular=0; Denominator=1;};
CScore(long int M, long int D):Molecular(M),Denominator(D){};
~CScore(){Molecular=0; Denominator=1;};
CScore& operator=(const CScore &data);
//分数运算
CScore operator+(const CScore &data);
CScore& operator+=(const CScore &data);
CScore operator-(const CScore &data);
CScore& operator-=(const CScore &data);
CScore operator*(const CScore &data);
CScore& operator*=(const CScore &data);
CScore operator/(const CScore &data);
CScore& operator/=(const CScore &data);

void The_lowest_common(CScore &data); //求最大公约数
void Show()
{
cout<<"分子="<<Molecular<<" 分母="<<Denominator<<endl;
}
};
//-----------------------------------------------------------------
CScore& CScore::operator=(const CScore &data)
{
Molecular = data.Molecular;
Denominator = data.Denominator;

The_lowest_common(*this);
return *this;
}
//-----------------------------------------------------------------
CScore CScore::operator+(const CScore &data)
{
CScore tmp;
tmp.Molecular = Molecular*data.Denominator + Denominator*data.Molecular;
tmp.Denominator = Denominator*data.Denominator;

The_lowest_common(tmp);
return tmp;
}
//-----------------------------------------------------------------
CScore& CScore::operator+=(const CScore &data)
{
Molecular = Molecular*data.Denominator + Denominator*data.Molecular;
Denominator = Denominator*data.Denominator;

The_lowest_common(*this);
return *this;
}
//-----------------------------------------------------------------
CScore CScore::operator-(const CScore &data)
{
CScore tmp;
tmp.Molecular = Molecular*data.Denominator - Denominator*data.Molecular;
tmp.Denominator = Denominator*data.Denominator;

The_lowest_common(tmp);
return tmp;
}
//-----------------------------------------------------------------
CScore& CScore::operator-=(const CScore &data)
{
Molecular = Molecular*data.Denominator - Denominator*data.Molecular;
Denominator = Denominator*data.Denominator;

The_lowest_common(*this);
return *this;
}
//-----------------------------------------------------------------
CScore CScore::operator*(const CScore &data)
{
CScore tmp;
tmp.Molecular = Molecular*data.Molecular;
tmp.Denominator = Denominator*data.Denominator;

The_lowest_common(tmp);
return tmp;
}
//-----------------------------------------------------------------
CScore& CScore::operator*=(const CScore &data)
{
Molecular = Molecular*data.Molecular;
Denominator = Denominator*data.Denominator;

The_lowest_common(*this);
return *this;
}
//-----------------------------------------------------------------
CScore CScore::operator/(const CScore &data)
{
CScore tmp;
tmp.Molecular = Molecular*data.Molecular;
tmp.Denominator = Denominator*data.Molecular;

The_lowest_common(tmp);
return tmp;
}
//-----------------------------------------------------------------
CScore& CScore::operator/=(const CScore &data)
{
Molecular = Molecular*data.Molecular;
Denominator = Denominator*data.Molecular;

The_lowest_common(*this);
return *this;
}
//-----------------------------------------------------------------
void CScore::The_lowest_common(CScore &data)
{
long int fz,fm;
long int max,min;
long int gys;

fz = data.Molecular;
fm = data.Denominator;
min = fz > fm ? fm : fz;
max = fz < fm ? fm : fz;
gys = max % min;
while (gys != 0) //存在余数,辗转相除
{
max = min;
min = gys;
gys = max % min;
}
data.Molecular /= min;
data.Denominator /= min;
}
//-----------------------------------------------------------------
int main()
{
CScore a1(86,128);
CScore a2(32,36);

a1.The_lowest_common(a1);
a1.Show();
a2.The_lowest_common(a2);
a2.Show();

CScore a3;
a3 = a1+a2;
a3.Show();

a1 += a2;
a1.Show();

return 0;
}
我来看看CB 2009-12-31
  • 打赏
  • 举报
回复
看不太明白。帮顶

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧