假设我在一个文本文件中有一组 1000 个统计数据。其中第一列表示索引的数量,第二列表示该值。索引可以重复,对应的值可以不同。我想计算索引的出现以及每个索引的值的总和。
我编写了一个代码,它给出了索引出现的结果,但它没有给出相应的值总和。
例子
假设我的文本文件有一组像这样的数据-
#index value
4 0.51
5 0.13
5 0.53
5 0.25
6 0.16
6 0.16
7 0.38
4 0.11
3 0.101
4 0.32
4 0.2 ... and more
所以在这种情况下——
索引 4出现4 次,相应的值总和= (0.51+0.11+0.32+0.2) = 1.14
相似地
索引 5出现2 次,值的总和= (0.13+0.53)= 0.66 等。
我的代码
这是我的代码-
#include <iostream>
#include <map>
#include <fstream>
using namespace std;
int main()
{
map<double,double> index;
double number,value;
double total;
ifstream theFile ("a1.txt");
while(theFile >> number >> value)
{
++index[number];
total +=value;
}
cout<<"index\t occurs\t total"<<endl;
for(auto loop = index.begin(); loop != index.end();++loop)
{
cout << loop->first << "\t " << loop->second << "\t \t "<< total<<endl;
}
return 0;
}
此代码生成结果-
index occurs total
3 1 2.851
4 4 2.851
5 3 2.851
6 2 2.851
7 1 2.851
虽然出现的次数是正确的,但是
总计+=价值;
不会生成我正在寻找的输出。如何获得每个索引的总和?