RationalNumber类C++
时间: 2023-12-17 09:05:33 浏览: 49
下面是一个简单的实现RationalNumber类的C++代码:
```c++
#include <iostream>
using namespace std;
class RationalNumber {
private:
int numerator; // 分子
int denominator; // 分母
public:
RationalNumber() {
numerator = 0;
denominator = 1;
}
RationalNumber(int numerator, int denominator) {
this->numerator = numerator;
this->denominator = denominator;
simplify(); // 约分
}
// 获取分子
int getNumerator() const {
return numerator;
}
// 获取分母
int getDenominator() const {
return denominator;
}
// 赋值运算符重载
RationalNumber& operator=(const RationalNumber& other) {
if (this != &other) {
numerator = other.numerator;
denominator = other.denominator;
}
return *this;
}
// 加法运算符重载
RationalNumber operator+(const RationalNumber& other) {
int newNumerator = numerator * other.denominator + other.numerator * denominator;
int newDenominator = denominator * other.denominator;
return RationalNumber(newNumerator, newDenominator);
}
// 减法运算符重载
RationalNumber operator-(const RationalNumber& other) {
int newNumerator = numerator * other.denominator - other.numerator * denominator;
int newDenominator = denominator * other.denominator;
return RationalNumber(newNumerator, newDenominator);
}
// 乘法运算符重载
RationalNumber operator*(const RationalNumber& other) {
int newNumerator = numerator * other.numerator;
int newDenominator = denominator * other.denominator;
return RationalNumber(newNumerator, newDenominator);
}
// 除法运算符重载
RationalNumber operator/(const RationalNumber& other) {
int newNumerator = numerator * other.denominator;
int newDenominator = denominator * other.numerator;
return RationalNumber(newNumerator, newDenominator);
}
// 约分
void simplify() {
int gcd = getGCD(numerator, denominator);
numerator /= gcd;
denominator /= gcd;
if (denominator < 0) {
numerator *= -1;
denominator *= -1;
}
}
// 获取最大公约数
int getGCD(int a, int b) {
if (b == 0) {
return a;
}
return getGCD(b, a % b);
}
// 输出有理数
void print() const {
if (denominator == 1) {
cout << numerator << endl;
} else {
cout << numerator << "/" << denominator << endl;
}
}
};
int main() {
RationalNumber r1(2, 3);
RationalNumber r2(3, 4);
RationalNumber r3 = r1 + r2;
RationalNumber r4 = r1 - r2;
RationalNumber r5 = r1 * r2;
RationalNumber r6 = r1 / r2;
cout << "r1 = ";
r1.print();
cout << "r2 = ";
r2.print();
cout << "r1 + r2 = ";
r3.print();
cout << "r1 - r2 = ";
r4.print();
cout << "r1 * r2 = ";
r5.print();
cout << "r1 / r2 = ";
r6.print();
return 0;
}
```
在该代码中,定义了一个 `RationalNumber` 类,包含了分子和分母两个私有成员变量,以及一些公有成员函数,包括构造函数、赋值运算符重载、加法、减法、乘法、除法运算符重载、约分、获取最大公约数、输出有理数等。在 `main` 函数中,创建了两个有理数对象 `r1` 和 `r2`,并对其进行了加、减、乘、除等运算,最后输出了结果。