基本信息
源码名称:c++ 分数运算(入门级)
源码大小:1.89KB
文件格式:.cpp
开发语言:C/C++
更新时间:2019-11-27
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍


#include<iostream>
#include<cmath>
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<<temp.getn()<<"/"<<temp.getd();
	return 0;
}