c++计算n个有理数的平均值,要求使用结构体表示有理数
时间: 2024-10-20 21:07:48 浏览: 22
在 C++ 中,我们可以创建一个名为 `Rational` 的结构体来表示有理数,包含分子 `num` 和分母 `den`。然后,为了计算 n 个有理数的平均值,你可以这样做:
```cpp
#include <iostream>
#include <vector>
// 定义 Rational 结构体表示有理数
struct Rational {
int num;
int den;
// 构造函数
Rational(int n = 0, int d = 1) : num(n), den(d) {}
// 将有理数转换为浮点数形式(用于除法)
float to_float() const {
return static_cast<float>(num) / den;
}
};
// 计算有理数平均值的函数
double average(const std::vector<Rational>& rational_numbers, int count) {
double sum = 0.0;
for (int i = 0; i < count; ++i) {
sum += rational_numbers[i].to_float();
}
return sum / count;
}
int main() {
int n;
std::cout << "请输入有理数的数量: ";
std::cin >> n;
std::vector<Rational> numbers(n);
for (int i = 0; i < n; ++i) {
std::cout << "请输入第 " << i+1 << " 个有理数的分子和分母: ";
int num, den;
std::cin >> num >> den;
if (den != 0) { // 避免除以零的情况
numbers[i] = Rational(num, den);
} else {
std::cerr << "分母不能为零!" << std::endl;
}
}
double avg = average(numbers, n);
std::cout << "这 " << n << " 个有理数的平均值是: " << avg << std::endl;
return 0;
}
```
在这个程序中,我们首先获取用户输入的有理数数量和每个有理数的分子和分母。然后,我们将它们存储在一个 `Rational` 结构体向量中,并计算平均值。注意这里将有理数转换为浮点数进行平均值运算,因为结构体内部是整数,直接相加可能会丢失精度。
阅读全文