2、定义的 Fraction类成员函数(分数即是有理数) (1)分数的加减乘除,并对运算结果进行规范表示,比如 2/10, 其规范表示为 1/5。 (2)求分子和分母的最小公倍数和最大公约数。 (3)重写toString方法,显示分数的规范表示。例如:1/5
时间: 2024-09-23 13:13:02 浏览: 30
分数计数器
在Scala中,对于`Fraction`类,我们可以按照上述需求扩展它的功能。这里给出一些关键部分的实现:
1. **加减乘除:**
- 定义add(), subtract(), multiply(), divide()方法,处理四则运算,并规范化结果:
```scala
override def add(other: Fraction): Fraction = {
val gcd = gcd(n, other.numer)
Fraction((n * other.d + other.n * d) / gcd, d * other.d / gcd)
}
// 类似地,可以实现subtract(), multiply(), 和 divide()
```
- 规范化操作(例如,除尽后保留最简形式):
```scala
private def normalize(): Unit = {
val gcd = gcd(n, d)
if (gcd != 1) {
n /= gcd
d /= gcd
}
}
```
2. **求分子和分母的最大公约数和最小公倍数:**
- 使用欧几里得算法计算最大公约数(GCD):
```scala
private def gcd(a: Int, b: Int): Int = if (b == 0) a else gcd(b, a % b)
```
- 最小公倍数(LCM)可以用`a * b / gcd(a, b)`来计算。
3. **重写toString方法:**
```scala
override def toString: String = normalize().toString // 返回规范化的字符串,如"1/5"
```
结合以上代码段,你的`Fraction`类将会包含完整的分数运算及规范表示的功能。
阅读全文