C/C++——读入一系列由空白分割的(名字,值)对,其中每个名字是由空白分隔开的一个单词,值是一个整数或者一个浮点值, 计算并打印出对应于每个名字的所有值之和与平均值..
来源:互联网 发布:下周重要经济数据 编辑:程序博客网 时间:2024/05/16 09:07
要求:
读入一系列由空白分割的(名字,值)对,其中每个名字是由空白分隔开的一个单词,值是一个整数或者一个浮点值,计算并打印出对应于每个名字的所有值之和与平均值,以及所有名字的和与平均值。(C++程序设计语言,第六章习题3)
考察:数据结构的使用。主要使用 map, pair, string结构
主要数据结构定义:map<string, pair<int, double> > m;
源代码:
/*************************************************************************> File Name: 6_3_map_pair.cpp> Author: > Mail: > Created Time: 2016年03月02日 星期三 11时06分43秒 ************************************************************************/#include <iostream>#include <map>#include <utility>#include <string>using namespace std;int main(){ map<string, pair<int, double> > m; string name; double value; while(cin >> name >> value){ if(m.find(name) == m.end()){//没有找到name,则要重新创建一个成员 m[name] = make_pair(1, value); } else{ m[name].first++; m[name].second += value; } } int num = 0; double sum = 0.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; return 0;}
运行结果:
linux 2linux 3ever 1linux 1ever 4ubuntu 2ever: sum = 5, avg = 2.5linux: sum = 6, avg = 2ubuntu: sum = 2, avg = 2all sum = 13, avg = 2.16667
输入的时候按下Ctrl+d 退出while输入循环。参考:linux系统下怎么输入EOF退出输入循环while(getline(cin, temp)){.....}
0 0
- C/C++——读入一系列由空白分割的(名字,值)对,其中每个名字是由空白分隔开的一个单词,值是一个整数或者一个浮点值, 计算并打印出对应于每个名字的所有值之和与平均值..
- 有三个线程名字分别是A、B、C,每个线程只能打印自己的名字,在屏幕上顺序打印 ABC,打印10次。
- 2个二叉树A、B,树的每个节点上都有一个整数值。如何判断A与B是否其中一个是另一个的子树?
- Python读取某个目录下的zip压缩包解压开后计算每个小文件的md5值,并将压缩包名字、里面小文件名字、以及对应的md5值写入csv文件
- 有三个线程名字分别是A、B、C,每个线程只能打印自己的名字,在屏幕上顺序打印 ABC,打印10次。不准使用线程的sleep()
- 河边的小屋原来是这么俗气的一个名字
- 华为机考 给你一个N*M的矩阵,每个位置的值是0或1,求一个面积最大的子矩阵,这个矩阵必须是一个正方形,且里面只能由1构成,输出最大的正方形边长。其中n,m<=400;
- 输入一个奇数n,打印出一个n*n的矩阵,每个数字是从1到n*n的整数,要使每一行,每一列的数字之和都相等
- C++:计算一个整数的数字之和
- videobox,一个错误的名字
- 一个web项目的名字
- 显示一个变量的名字
- 数据结构习题分析:已知由一个线性链表表示的线性表中含有三类字符的数据元素,是编写算法将该线性表分割为三个循环链表,其中每个。。。。。
- 声明一个指向含有10个元素的数组的指针,其中每个元素是一个函数指针,该函数的返回值是int,参数是int*,正确的是()
- 收藏一个SQL,获取sqlsever中一个数据库里所有存储过程或者函数的名字
- 给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
- 【练习题】 使用程序建立一个多级的目录,在每个目录下,新建一个和目录名字一样的txt文件,并写入1990
- 编写一个程序,读入一个值,计算并打印它的平方根
- Activity的启动模式
- hdu 1231 最大连续子序列
- px4: actuators control, control group 和 mixer科普
- 一个有趣的问题:怎么在JS的数组中去除重复元素?(JAVA实现吧..)
- Java并发编程:线程池的使用
- C/C++——读入一系列由空白分割的(名字,值)对,其中每个名字是由空白分隔开的一个单词,值是一个整数或者一个浮点值, 计算并打印出对应于每个名字的所有值之和与平均值..
- SpringMVC之异常处理
- android 混淆相关文件的输出地址
- webview alert confirm 重写
- bzoj2879: [Noi2012]美食节
- iOS中根据生日计算星座♈️
- checkio-the flat dictionary
- 设计模式概论
- 拍摄照片发生反转,变量初始null