对于糕点统计点击率记录的代码c++
时间: 2024-09-10 09:19:34 浏览: 16
对于给定的糕点点击率记录的数据结构[^1],假设每个整数表示某次点击事件,你可以使用C++编写一个简单的程序来统计每个字符(可能代表特定类型的蛋糕)的点击次数。这可以通过读取输入文件并逐行处理来实现。以下是一个示例代码片段:
```cpp
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
// 假设我们有一个名为"Cakes.txt"的文件作为输入
void count_clicks(const string& filename) {
ifstream inputFile(filename);
if (!inputFile.is_open()) {
cerr << "Failed to open the file." << endl;
return;
}
string line;
while (getline(inputFile, line)) {
// 每行数据的第一行为整数n, m, a, b
size_t pos = 0;
int n, m, a, b;
getline(inputFile, line, '\t'); // 获取第一行
sscanf(line.c_str(), "%d %d %d %d", &n, &m, &a, &b);
// 获取第二行蛋糕重量信息
getline(inputFile, line, '\t');
vector<int> weights(m);
for (size_t i = 0; i < m; ++i) {
weights[i] = stoi(line.substr(pos++, 1)); // 以单个字符形式读取
}
// 统计点击次数
unordered_map<char, int> clickCounts;
for (int weight : weights) {
char cakeChar = static_cast<char>(weight - '0'); // 转换为ASCII字符
clickCounts[cakeChar]++;
}
// 输出结果
for (const auto& pair : clickCounts) {
cout << pair.first << ": " << pair.second << endl;
}
}
inputFile.close();
}
int main() {
count_clicks("Cakes.txt");
return 0;
}
```
这个代码首先打开文件,然后逐行读取。对于每一行的蛋糕重量信息,它会统计每个字符(通过从ASCII码减去'0'得到)的点击次数,并在完成后打印出来。