下你所需,载你所想!
汇集开发技术源码资料

c++分数运算(入门级)

:774B :1 :2022-07-13 13:51:22

部分简介

#include
#include
using namespace std;
class CRational{
long num;//分子
long den;//分母
long gcb(long num,long den);//求最大公约数
void Simplify(CRational &r);//化简分数
public:
CRational(long n, long d);//构造函数
CRational add(CRational r);//加法
CRational minu(CRational r);//减法
CRational multi(CRational r);//乘法
CRational divide(CRational r);//除法
int getn();//获取分数的分子
int getd();//获取分数的分母
};
long CRational:: gcb(long num,long den)//辗转相除法求最大公约数 ,利用递归函数
{
if(den==0)
return num;
else
return gcb(den,num%den);
}
void CRational:: Simplify(CRational &r)//化简函数,将分数约分
{
int a;
a=gcb(abs(r.num),abs(r.den)); //求出分子分母的最大公约数
r.num=r.num/a;//分子除以最大公约数
r.den=r.den/a;//分母除以最大公约数
}
CRational:: CRational(long n, long d)//构造函数,将分子和分母赋值
{
num=n;
den=d;
}
CRational CRational:: add(CRational r)//加法
{
CRational a(0,0);
a.num=num*r.den r.num*den;
a.den=den*r.den;
Simplify(a);
return a;
}
CRational CRational:: minu(CRational r)//减法
{
CRational a(0,0);
a.num=num*r.den-r.num*den;
a.den=den*r.den;
Simplify(a);
return a;
}
CRational CRational:: multi(CRational r)//乘法
{
CRational a(0,0);
a.num=num*r.num;
a.den=den*r.den;
Simplify(a);
return a;
}
CRational CRational:: divide(CRational r)//除法
{
CRational a(0,0);
a.num=num*r.den;
a.den=den*r.num;
Simplify(a);
return a;
}
int CRational:: getn() //得到分子的数值
{
return num;
}
int CRational:: getd() //得到分母的数值
{
return den;
}
int main()
{
CRational a(13,24);
CRational b(4,7);
CRational c(3,29);
CRational temp(0,0);
temp=a.multi(b);
temp=temp.minu(c);
cout< return 0;
}

热门推荐

相关文章