先标一下头文件吧,不过我还是觉得<bits/stdc++>更好用
这个啥作用呢,分数化简哈,gcd函数嘛,我的建议是不要总是用库,这个也是很好写的,新手的话可以自己写一个gcd函数
这段是Fraction类的全部代码
这段很显然啊,先是一个默认构造函数,接着来了一个对于化简函数的调用,因为要为最简形嘛
这段很重要哈,当时题目里加一个1e16,说实话,没看懂,后来搞了老半天才写出来(当然也借助了写ai仙人的力量)
这段代码定义了一个构造函数Fraction(double d)
,它接受一个double
类型的参数d
。这个构造函数的作用是将一个double
类型的数转换为分数类型。
在构造函数中,我们首先将double
类型的数d
乘以1e16(即10的16次方)并转换为long long
类型,这样可以将小数部分扩大到整数部分。然后,我们将得到的整数部分作为分子,1e16作为分母,构造一个分数。接下来,我们调用gcd
函数计算分子和分母的最大公约数,然后将分子和分母分别除以最大公约数,得到最简分数形式。最后,将计算得到的最简分数形式的分子和分母分别赋值给numerator
和denominator
成员变量,完成了分数类型的构造
这剩下的就没啥意思了,输入运算符重载,输出运算符重载,加,减,乘,除法分别重载,
诶,接下来可能有小伙伴看不懂了,这个是类型转换运算符重载,最后的呢就是赋值运算符重载
(在运算符重载这块呢,有的小伙伴感觉这玩意有点抽象,不好理解,或者说理解了,但一写题,就无从下手,但其实别怕,多看,多敲,再不行就多抄,从main函数里面的运算来决定你的类中重载的运算符)
接下来附上main函数代码:
这次也是博主第一次写,可能也有些不充分,不完善的地方
嘿,将就着看吧