已知class Rational通过封装分子、分母实现了一个有理数。请你根据测试代码填空,实现它的两个构造函数。 class Rational { public: Rational(int nn, int dd____①____); Rational(int ii, int nn, int dd); // 比如说 1½ private: void Reduct(); // 约分,代码略…… int n; // 分子 int d; // 分母 }; Rational::Rational(int nn, int dd):n(____②____),d(____③____) { Reduct(); } Rational::Rational(int ii, int nn, int dd):n(____④____),d(____③____) { Reduct(); } 测试代码: Rational r1(2), r2(2, -3), r3(1, 1, 2);
时间: 2024-02-22 14:58:10 浏览: 74
以下是代码实现:
```c++
class Rational {
public:
Rational(int nn, int dd = 1);
Rational(int ii, int nn, int dd);
private:
void Reduct();
int n; // 分子
int d; // 分母
};
Rational::Rational(int nn, int dd) : n(nn), d(dd) {
Reduct();
}
Rational::Rational(int ii, int nn, int dd) : n(ii * dd + nn), d(dd) {
Reduct();
}
void Rational::Reduct() {
int a = abs(n), b = abs(d);
while (b != 0) {
int r = a % b;
a = b;
b = r;
}
n /= a;
d /= a;
if (d < 0) {
n = -n;
d = -d;
}
}
int main() {
Rational r1(2), r2(2, -3), r3(1, 1, 2);
return 0;
}
```
在类 `Rational` 中,第一个构造函数 `Rational(int nn, int dd = 1)` 用于初始化一个有理数对象,其中 nn 表示分子,dd 表示分母,dd 的默认值为 1。第二个构造函数 `Rational(int ii, int nn, int dd)` 用于初始化一个带分数对象,其中 ii 表示整数部分,nn 表示分数部分的分子,dd 表示分数部分的分母。
在构造函数中,通过成员初始化列表初始化成员变量 n 和 d,并且在构造函数的末尾调用了 Reduct 方法进行约分。
阅读全文