关于c++map使用的一道题
要求:读入一系列由空白分割的(名字,值)对,其中每个名字是由空白分隔开的一个单词,值是一个整数或者一个浮点值,计算并打印出对应于每个名字的所有值之和与平均值,以及所有名字...
要求:读入一系列由空白分割的(名字,值)对,其中每个名字是由空白分隔开的一个单词,值是一个整数或者一个浮点值,计算并打印出对应于每个名字的所有值之和与平均值,以及所有名字的和与平均值。
(要求使用map函数) 展开
(要求使用map函数) 展开
1个回答
展开全部
试一下
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main() {
string name;
double value;
map<string,pair<int,double> > m;
while (cin >> name >> value) {
if (m.find(name) == m.end()) {
m[name] = make_pair(1, value);
}
else {
m[name].first++;
m[name].second += value;
}
}
double sum = 0;
int num = 0;
for (map<string, pair<int, double> >::iterator it = m.begin(); it != m.end(); it++) {
cout << it->first << " sum: " << it->second.second << " avg: " << it->second.second / it->second.first << endl;
num += it->second.first;
sum += it->second.second;
}
cout << "All sum: " << sum << " avg: " << sum / num << endl;
}
更多追问追答
追问
输入数据的终止条件怎么判断啊?刚才试了一下好像只有最后输入两个非数字的数据的时候程序才会运行啊
追答
终止条件是EOF,或者是非法输入
输入结束以后按Ctrl+Z然后回车即可
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询