用C++解决众数问题,由input.text文件输入集合,由output.text输出,写出代码。
时间: 2024-10-06 21:04:53 浏览: 35
在C++中解决寻找一组整数中的众数问题,可以使用哈希表或STL中的`std::unordered_map`来存储每个元素及其出现的次数。以下是一个简单的示例,假设文件包含一行逗号分隔的整数:
```cpp
#include <iostream>
#include <fstream>
#include <sstream>
#include <unordered_map>
int findMode(const std::string &input_file) {
std::ifstream inputFile(input_file);
std::unordered_map<int, int> countMap;
if (!inputFile.is_open()) {
throw std::runtime_error("Failed to open the input file.");
}
int num;
while (inputFile >> num) {
++countMap[num];
}
inputFile.close();
// 找到最大计数值对应的键,即众数
int mode = -1;
int maxCount = 0;
for (const auto &entry : countMap) {
if (entry.second > maxCount) {
mode = entry.first;
maxCount = entry.second;
}
}
return mode;
}
void writeOutputToFile(int mode, const std::string &output_file) {
std::ofstream outputFile(output_file);
if (!outputFile.is_open()) {
throw std::runtime_error("Failed to open the output file.");
}
outputFile << "The mode is: " << mode << '\n';
outputFile.close();
}
int main() {
std::string input_file = "input.text";
std::string output_file = "output.text";
try {
int mode = findMode(input_file);
writeOutputToFile(mode, output_file);
std::cout << "众数已成功写入 output.text\n";
} catch (const std::exception &e) {
std::cerr << "错误: " << e.what() << "\n";
}
return 0;
}
```
这个程序首先打开输入文件,读取所有数字并计算它们的出现次数。然后,它遍历计数映射找出最常见的数字(众数),并将结果写入输出文件。
阅读全文