用c++两个分数相加并且化简成最简形式,通过类来完成。思想是:求出两个数的最大公约数用来化简和求最大公倍数,具体公式代码中见

#include<iostream>
using namespace std;
class KB

{

	private:
		int fz,fm;//fz代表分子,fm代表分母
	public:
	 KB(int a=0,int b=1)//构造函数,分别用a和b对分子分母进行初始化
	 {
	 	fz=a,fm=b;
	 }
	 int gys(int m,int n);//求两个数的最大公约数
	 KB add(KB f);//因为要实现分数的相加,而分数又是作为对象,因为返回值类型和参数类型都是类类型
	 void show()//以正常形式输出分数 
	 {
	 	cout<<fz<<"/"<<fm<<endl; 
	  } 
 };
int KB::gys(int m,int n)
{

	int k,v;
  	if(m>n)//把两个数中最小的赋值给k 
  	  k=n;
  	else
  	  k=m;
  	while(k)
  	{
  	
  		if(m%k==0&&n%k==0)
  		break;
  		else
  		k--;
	  }
	  v=k;//把最大公约数储存在v中 
	  return v;
}
KB KB::add(KB f)
{

	KB zk; 
	int g=(this->fm*f.fm)/gys(this->fm,f.fm);//求出了分母的最大公倍数g=(m*n)/v
	zk.fz=(g/this->fm)*this->fz+(g/f.fm)*f.fz;//求出通分后的分子分母 
	zk.fm=g;
	int a=gys(zk.fz,zk.fm);//求出通分后的分子分母的最大公约数用来化简 
	zk.fz=zk.fz/a;//最简分子分母 
	zk.fm=zk.fm/a;
	return zk;
 } 
 int main()
 {
 
 	KB zk1(1,5),zk2(6,10),zk3;
 	zk3=zk1.add(zk2);
	zk3.show() ;
 }
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值