3实现加、减、乘、除四则运算符,使其可以处理两个RationalNumber对象之间的运算 4实现一个输出运算符,使其能够将RationalNumber对象以“分子/分母”的形式输出 5实现一个输入运算符,使其能够从用户输入的“分子/分母”的形式创建RationalNumber对象

以下是实现RationalNumber类的示例代码:

#include <iostream>
#include <stdexcept>

class RationalNumber {
private:
    int numerator; // 分子
    int denominator; // 分母

public:
    RationalNumber(int num = 0, int den = 1) {
        if (den == 0) {
            throw std::invalid_argument("denominator cannot be zero");
        }
        int gcd = getGCD(num, den);
        numerator = num / gcd;
        denominator = den / gcd;
        if (denominator < 0) {
            numerator = -numerator;
            denominator = -denominator;
        }
    }

    int getNumerator() const {
        return numerator;
    }

    int getDenominator() const {
        return denominator;
    }

    RationalNumber operator+(const RationalNumber& other) const {
        int num = numerator * other.denominator + other.numerator * denominator;
        int den = denominator * other.denominator;
        return RationalNumber(num, den);
    }

    RationalNumber operator-(const RationalNumber& other) const {
        int num = numerator * other.denominator - other.numerator * denominator;
        int den = denominator * other.denominator;
        return RationalNumber(num, den);
    }

    RationalNumber operator*(const RationalNumber& other) const {
        int num = numerator * other.numerator;
        int den = denominator * other.denominator;
        return RationalNumber(num, den);
    }

    RationalNumber operator/(const RationalNumber& other) const {
        int num = numerator * other.denominator;
        int den = denominator * other.numerator;
        return RationalNumber(num, den);
    }

    bool operator==(const RationalNumber& other) const {
        return numerator == other.numerator && denominator == other.denominator;
    }

    bool operator!=(const RationalNumber& other) const {
        return !(*this == other);
    }

    bool operator<(const RationalNumber& other) const {
        return numerator * other.denominator < other.numerator * denominator;
    }

    bool operator<=(const RationalNumber& other) const {
        return numerator * other.denominator <= other.numerator * denominator;
    }

    bool operator>(const RationalNumber& other) const {
        return numerator * other.denominator > other.numerator * denominator;
    }

    bool operator>=(const RationalNumber& other) const {
        return numerator * other.denominator >= other.numerator * denominator;
    }

    RationalNumber& operator=(const RationalNumber& other) {
        numerator = other.numerator;
        denominator = other.denominator;
        return *this;
    }

    friend std::ostream& operator<<(std::ostream& os, const RationalNumber& rn) {
        os << rn.numerator << "/" << rn.denominator;
        return os;
    }

    friend std::istream& operator>>(std::istream& is, RationalNumber& rn) {
        int num, den;
        char slash;
        is >> num >> slash >> den;
        rn = RationalNumber(num, den);
        return is;
    }

private:
    int getGCD(int a, int b) const {
        if (b == 0) {
            return a;
        }
        return getGCD(b, a % b);
    }
};

使用示例:

RationalNumber rn1(3, 4);
RationalNumber rn2(2, 3);
RationalNumber rn3 = rn1 + rn2;
std::cout << rn3 << std::endl; // 输出: 17/12

RationalNumber rn4 = rn1 * rn2;
std::cout << rn4 << std::endl; // 输出: 1/2

RationalNumber rn5;
std::cin >> rn5; // 输入: 5/6
std::cout << rn5 << std::endl; // 输出: 5/6
``
创建一个名为RationalNumber的类使其具有以下功能:1创建一个构造函数它可以避免分母为0对不是最简分数的分数进行约化2重载类的关系运算符和赋值运算符

原文地址: https://www.cveoy.top/t/topic/fIMZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录