CPP2023-029-运算符重载 6-6 分数

先标一下头文件吧,不过我还是觉得<bits/stdc++>更好用

 这个啥作用呢,分数化简哈,gcd函数嘛,我的建议是不要总是用库,这个也是很好写的,新手的话可以自己写一个gcd函数

这段是Fraction类的全部代码

这段很显然啊,先是一个默认构造函数,接着来了一个对于化简函数的调用,因为要为最简形嘛

这段很重要哈,当时题目里加一个1e16,说实话,没看懂,后来搞了老半天才写出来(当然也借助了写ai仙人的力量)

这段代码定义了一个构造函数Fraction(double d),它接受一个double类型的参数d。这个构造函数的作用是将一个double类型的数转换为分数类型。

在构造函数中,我们首先将double类型的数d乘以1e16(即10的16次方)并转换为long long类型,这样可以将小数部分扩大到整数部分。然后,我们将得到的整数部分作为分子,1e16作为分母,构造一个分数。接下来,我们调用gcd函数计算分子和分母的最大公约数,然后将分子和分母分别除以最大公约数,得到最简分数形式。最后,将计算得到的最简分数形式的分子和分母分别赋值给numeratordenominator成员变量,完成了分数类型的构造

这剩下的就没啥意思了,输入运算符重载,输出运算符重载,加,减,乘,除法分别重载,

诶,接下来可能有小伙伴看不懂了,这个是类型转换运算符重载,最后的呢就是赋值运算符重载

(在运算符重载这块呢,有的小伙伴感觉这玩意有点抽象,不好理解,或者说理解了,但一写题,就无从下手,但其实别怕,多看,多敲,再不行就多抄,从main函数里面的运算来决定你的类中重载的运算符)

接下来附上main函数代码:

这次也是博主第一次写,可能也有些不充分,不完善的地方

嘿,将就着看吧

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值