2、实现一个用分子分母的格式来表示有理数的结构体Rational及相关的函数,Rational之间可以做加减乘除运算,运算的结果仍然是Rational。测试代码如下:
时间: 2024-10-03 15:04:30 浏览: 30
为了实现一个用分子分母表示的有理数结构体`Rational`以及相关的运算函数,我们可以使用C++来编写这个程序。首先,我们需要创建一个包含分子和分母的结构体,并提供构造函数、赋值操作符等。
```cpp
#include <iostream>
using namespace std;
// 定义 Rational 结构体
struct Rational {
int numerator; // 分子
int denominator; // 分母
// 构造函数,初始化有理数为0/1
Rational() : numerator(0), denominator(1) {}
// 构造函数,接受两个整数作为参数
Rational(int num, int den) : numerator(num), denominator(den) {
// 确保分母非零
if (denominator == 0) {
throw runtime_error("Denominator cannot be zero");
}
}
// 赋值操作符,用于设置新的有理数
Rational& operator=(const Rational& other) {
numerator = other.numerator;
denominator = other.denominator;
return *this;
}
// 格式化输出为分子/分母形式
void print() const {
cout << numerator << "/" << denominator << endl;
}
// 运算相关函数
friend Rational operator+(const Rational& a, const Rational& b);
friend Rational operator-(const Rational& a, const Rational& b);
friend Rational operator*(const Rational& a, const Rational& b);
friend Rational operator/(const Rational& a, const Rational& b);
};
// 运算函数的具体实现
Rational operator+(const Rational& a, const Rational& b) {
int new_numerator = a.numerator * b.denominator + a.denominator * b.numerator;
int new_denominator = a.denominator * b.denominator;
return Rational(new_numerator, new_denominator);
}
// 其他运算函数类似,这里仅列出加法为例
// ... (写出其他运算如减法、乘法和除法的实现)
int main() {
try {
Rational r1(3, 4);
Rational r2(5, 6);
r1.print(); // 输出: 3/4
r2.print(); // 输出: 5/6
Rational sum = r1 + r2;
sum.print(); // 输出: (3*6 + 4*5)/ (4*6)
cout << "Sum: " << sum.numerator << "/" << sum.denominator << endl;
// 更多的测试用例...
} catch (const runtime_error& e) {
cerr << "Error: " << e.what() << endl;
}
return 0;
}
```
在这个例子中,我们实现了`Rational`结构体,包括基本的构造、赋值、打印功能以及加法运算。你可以按照相同的模式添加减法、乘法和除法的运算函数。注意,在进行除法运算时,需要特别处理分母为零的情况,防止运行时错误。
阅读全文