用C++编程建立分数类,实现分数加、减、乘、除、求倒等。

来源:百度知道 编辑:UC知道 时间:2024/06/21 16:30:46
编程:建立一个分数类。分数类的数据成员包括分子和分母,操作包括约分、通分、比较、加、减、乘、除、求倒数、显示和输入。分数类定义如下:
class fraction{
int above; //分子
int below; //分母
void reduction(); //约分
void makeCommond(fraction); //通分
public:
fraction(int=0,int=1); //构造函数
fraction add(fraction); //两分数相加
fraction sub(fraction); //本分数减去实参分数
fraction mul(fraction); //两分数相乘
fraction div(fraction); //本分数除以实参分数
fraction reciprocal(); //求倒数
bool epual(fraction); //等于运算
bool greaterThan(fraction); //大于运算
bool lessThan(fraction); //小于运算
void display(); //显示分数
void input(); //输入分数
};
[要求] 完成所有成员函数并进行检验。

部分代码,自己可以借鉴完善的

Franction FranAdd(const Franction& a,const Franction& b)
{ //返回两个分数a,b之和
void FranSimp(Franction&);
Franction c; //定义临时变量c,用于保存求和结果
c.nume=a.nume*b.deno+a.deno*b.nume //计算结构分数的分子
c.deno=a.deno*b.deno; //计算结果分数的分母
FranSimp(c); //化简分数
return c;
}
void FranSimp(Franction& x)
{ //把x化为最简分数
//求x的分子和分母的最大公约数
int m,n,r;
m=x.nume;n=x.deno;
r=m%n;
while(r!=0)
{ //循环结束值就是x分子分母的最倒公约数
m=n;n=r;
r=m%n;
}
//化简x,使分子分母缩小n倍
if(n!=1)
{
x.nume/=n;
x.deno/=n;
}
//若分母为负则让分子分母同时取负后使分子分母转换为正值
if(x.deno<0)
{
x.nume=-x.nume;
x.deno=-x.deno;
}
}
bool FranEqual(const Franction& a,const Franction& b)
{ //若a,b的值相等则返回ture,否则返回false;
if(a.nume*b.deno-b.nume*a.deno==0) return true;
else return false;
}
void FranInput(