设计实现抽象数据类型“有理数”。基本操作包括有理数的加法、减法、乘法、除法,以及求有理数的分子、分母。

下面是一个可能的实现有理数抽象数据类型的示例:

```python
class Rational:
    def __init__(self, numerator, denominator):
        self.numerator = numerator
        self.denominator = denominator

    def add(self, other):
        new_numerator = (self.numerator * other.denominator) + (other.numerator * self.denominator)
        new_denominator = self.denominator * other.denominator
        return Rational(new_numerator, new_denominator)

    def subtract(self, other):
        new_numerator = (self.numerator * other.denominator) - (other.numerator * self.denominator)
        new_denominator = self.denominator * other.denominator
        return Rational(new_numerator, new_denominator)

    def multiply(self, other):
        new_numerator = self.numerator * other.numerator
        new_denominator = self.denominator * other.denominator
        return Rational(new_numerator, new_denominator)

    def divide(self, other):
        new_numerator = self.numerator * other.denominator
        new_denominator = self.denominator * other.numerator
        return Rational(new_numerator, new_denominator)

    def get_numerator(self):
        return self.numerator

    def get_denominator(self):
        return self.denominator

    def __str__(self):
        return f"{self.numerator}/{self.denominator}"
```

然后,可以使用上述抽象数据类型进行有理数运算:

```python
r1 = Rational(1, 2)
r2 = Rational(2, 3)

# 加法
r3 = r1.add(r2)
print(r3)  # 输出: 7/6

# 减法
r4 = r1.subtract(r2)
print(r4)  # 输出: -1/6

# 乘法
r5 = r1.multiply(r2)
print(r5)  # 输出: 1/3

# 除法
r6 = r1.divide(r2)
print(r6)  # 输出: 3/4

# 获取分子和分母
numerator = r1.get_numerator()
denominator = r1.get_denominator()
print(f"Numerator: {numerator}, Denominator: {denominator}")  # 输出: Numerator: 1, Denominator: 2
```

上述实现中,使用了分数的分子和分母两个属性来表示有理数,并提供了对应的基本运算方法。同时,还提供了获取分子和分母的方法用于获取有理数的相关信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值