: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<
}
10-09简单的学生管理系统(入门级控制台实例)
10-09进程控制(入门级实例)
10-09电梯(入门级实例代码)
10-05C++讲义(入门级教程)
10-03运算符重载(入门级课件)
10-03c++ 生成随机数(入门级示例)
10-03族谱系统代码(c++入门级示例)
10-02两整数相加(入门级示例)
10-01学生成绩录入(c++控制台入门级示例)
09-29c++ 获取用户的输入并输出(入门级)