用C++编程建立分数类,实现分数加、减、乘、除、求倒等。25
发布网友
发布时间:2023-10-13 01:29
我来回答
共1个回答
热心网友
时间:2024-12-03 07:05
部分代码,自己可以借鉴完善的
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(Franction& x)
{ //分数的输入
char ch; //ch保存分数驶入分除号
cout<<"Input a franction:"<<ednl;
cin>>x.nume>>ch>>x.deno;
if(x.deno==0)
{ cout<<"除数为0!"<<endl;
exit(1); //中止程序运行
}
}
void FranOutput(Franction& x)
{ //分数的输出
cout<<x.nume<<'/'<<x.deno<<endl;
}