#include #include using namespace std;

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

public: RationalNumber(int num = 0, int den = 1) { if (den == 0) { cout << "Error: denominator cannot be zero!" << endl; exit(EXIT_FAILURE); } 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;
}

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

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

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

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

private: // 获取最大公约数 int getGCD(int a, int b) { if (b == 0) { return abs(a); } else { return getGCD(b, a % b); } } };

int main() { RationalNumber r1(3, 4); RationalNumber r2(5, 6); RationalNumber r3 = r1 + r2; RationalNumber r4 = r1 - r2; RationalNumber r5 = r1 * r2; RationalNumber r6 = r1 / r2; cout << r1.getNumerator() << "/" << r1.getDenominator() << " + " << r2.getNumerator() << "/" << r2.getDenominator() << " = " << r3.getNumerator() << "/" << r3.getDenominator() << endl; cout << r1.getNumerator() << "/" << r1.getDenominator() << " - " << r2.getNumerator() << "/" << r2.getDenominator() << " = " << r4.getNumerator() << "/" << r4.getDenominator() << endl; cout << r1.getNumerator() << "/" << r1.getDenominator() << " * " << r2.getNumerator() << "/" << r2.getDenominator() << " = " << r5.getNumerator() << "/" << r5.getDenominator() << endl; cout << r1.getNumerator() << "/" << r1.getDenominator() << " / " << r2.getNumerator() << "/" << r2.getDenominator() << " = " << r6.getNumerator() << "/" << r6.getDenominator() << endl; return 0;

编写c++程序创建一个名为RationalNumber的类使其具有以下功能:1创建一个构造函数它可以避免分母为0对不是约化性的分数进行约化并且可以避免分母为负数。 2重载类的加减乘除运算符

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

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