酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

用c++严格按格式编写,如果分母为1的话就不用显示出来】任何有理数都可以表示为“分子/分母”的方式,其中分子、分母都是整数(若为负有理数,则分子为负整数;无论负有理数还是正有理数,分母总是正整数)。实现一个有理数类rational,通过构造函数赋初值,并为这个有理数类重载四则运算(+、-、*、/)和所有的比较逻辑运算符(==、!=、>=、>、<=、<),所有四则运算和比较运算重载均以类的成员函数方式实现。并重载插入运算符“<<”输出有理数。 【输入形式】按照系统提示,分别输入两个有理数的分子和分母。 【输出形式】分别输出四则运算和比较运算的结果。 【样例输入】 -2 1 1 3 【样例输出】 please enter rational number a (numerator denominator format): please enter rational number b (numerator denominator format): the output results are as follows: -2 + 1/3 = -5/3 -2 -

```cpp #include <iostream> class Rational { private: int numerator; int denominator; void simplify() { int gcd = __gcd(numerator, denominator); numerator /= gcd; denominator /= gcd; if (denominator < 0) { numerator = -numerator; denominator = -denominator; } } public: Rational(int num = 0, int den = 1) { numerator = num; denominator = (den > 0)? den : 1; simplify(); } Rational operator+(const Rational& other) { int newNumerator = numerator * other.denominator + other.numerator * denominator; int newDenominator = denominator * other.denominator; Rational result(newNumerator, newDenominator); return result; } Rational operator-(const Rational& other) { int newNumerator = numerator * other.denominator - other.numerator * denominator; int newDenominator = denominator * other.denominator; Rational result(newNumerator, newDenominator); return result; } Rational operator*(const Rational& other) { int newNumerator = numerator * other.numerator; int newDenominator = denominator * other.denominator; Rational result(newNumerator, newDenominator); return result; } Rational operator/(const Rational& other) { int newNumerator = numerator * other.denominator; int newDenominator = denominator * other.numerator; Rational result(newNumerator, newDenominator); return result; } bool operator==(const Rational& other) { return numerator == other.numerator && denominator == other.denominator; } bool operator!=(const Rational& other) { return!(*this == other); } bool operator>=(const Rational& other) { return numerator * other.denominator >= other.numerator * denominator; } bool operator>(const Rational& other) { return numerator * other.denominator > other.numerator * denominator; } bool operator<=(const Rational& other) { return numerator * other.denominator <= other.numerator * denominator; } bool operator<(const Rational& other) { return numerator * other.denominator < other.numerator * denominator; } friend std::ostream& operator<<(std::ostream& os, const Rational& r) { if (r.denominator == 1) { os << r.numerator; } else { os << r.numerator << "/" << r.denominator; } return os; } }; int main() { int num1, den1, num2, den2; std::cout << "please enter rational number a (numerator denominator format):" << std::endl; std::cin >> num1 >> den1; std::cout << "please enter rational number b (numerator denominator format):" << std::endl; std::cin >> num2 >> den2; Rational a(num1, den1); Rational b(num2, den2); std::cout << "the output results are as follows:" << std::endl; std::cout << a << " + " << b << " = " << a + b << std::endl; std::cout << a << " - " << b << " = " << a - b << std::endl; std::cout << a << " * " << b << " = " << a * b << std::endl; std::cout << a << " / " << b << " = " << a / b << std::endl; std::cout << a << " == " << b << " : " << (a == b) << std::endl; std::cout << a << "!= " << b << " : " << (a!= b) << std::endl; std::cout << a << " >= " << b << " : " << (a >= b) << std::endl; std::cout << a << " > " << b << " : " << (a > b) << std::endl; std::cout << a << " <= " << b << " : " << (a <= b) << std::endl; std::cout << a << " < " << b << " : " << (a < b) << std::endl; return 0; } ``` [2024-11-09 19:20:32 | AI写代码神器 | 1099点数解答]

相关提问