编写一个c++程序,从一个double类型的数字文件中获取输入,并将文件中数字的平均值输出到屏幕上。该文件只包含由空格和/或换行符分隔的double类型的数字
时间: 2024-09-30 08:11:02 浏览: 33
在C++中,你可以使用`fstream`库来读取文件内容并计算平均值。这里是一个简单的示例程序:
```cpp
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
double calculate_average(const std::string& filename) {
std::ifstream file(filename);
if (!file.is_open()) {
std::cerr << "Failed to open file: " << filename << std::endl;
return 0.0;
}
double sum = 0.0;
int count = 0;
std::string line;
while (std::getline(file, line)) {
std::istringstream iss(line);
double number;
if (iss >> number) { // 如果能成功转换为double,说明是有效数字
sum += number;
count++;
} else {
std::cerr << "Invalid number found in file." << std::endl;
}
}
file.close();
return count > 0 ? sum / count : 0.0; // 返回平均值,如果count为0则返回0避免除以零错误
}
int main() {
std::string input_file = "numbers.txt"; // 文件名替换为你实际的文件路径
double average = calculate_average(input_file);
std::cout << "Average of numbers from the file: " << average << std::endl;
return 0;
}
```
这个程序首先尝试打开指定的文件,然后逐行读取。对于每一行,它会尝试将数据解析为`double`类型。如果解析成功,就将其添加到总和中,同时增加计数器。最后,当所有有效的数字都被处理后,程序会关闭文件并计算平均值。
注意,此程序假设文件中的数字之间仅由空格或换行符分隔,且没有其他无效字符。在实际应用中,你可能需要处理更复杂的输入格式。
阅读全文