C++实现有理数类:重载四则与比较运算符并按格式输出
```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; } ``` ######[AI写代码神器 | 1099点数解答 | 2024-11-09 19:20:32]
- C++ 实现:从卫星导航 $gprmc 报文精准提取经纬度值(字节豆包 | 385点数解答 | 2025-01-08 03:43:54)468
- 卫星导航 GPRMC 报文解析:C++ 实现经纬度提取(字节豆包 | 346点数解答 | 2025-01-08 03:46:29)460
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)350
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)322
- Python开发必知://、%、**运算符深度解析(阿里通义 | 317点数解答 | 2023-11-08 00:49:49)987
- Android 开发:Kotlin 中简洁实用的 Elvis 运算符全解析(百度文心 | 231点数解答 | 2023-11-09 17:28:21)271
- Android开发:Kotlin双感叹号(!!)运算符全解析及使用风险(百度文心 | 334点数解答 | 2023-11-09 17:28:33)295
- Python+Tkinter:打造30以内加减乘除随机出题、判题打分GUI小程序(GPT | 1266点数解答 | 2024-06-19 14:45:56)333
- Python 复数类 Complex:前置与后置自增运算符重载全解析(字节豆包 | 357点数解答 | 2025-06-06 17:22:02)133
- Python 求解:n×n 矩阵全置零的最少 k×k 子矩阵操作次数!(字节豆包 | 360点数解答 | 2024-10-24 14:05:14)314
- C++ 实现:破解商场人体打印墙矩阵归零最少操作次数的暴力解法(字节豆包 | 814点数解答 | 2024-10-24 14:06:12)319
- Excel技巧:8位文本轻松转换为“yyyy年mm月dd日”格式( | 267点数解答 | 2023-12-29 09:52:27)318