假設我在文本文件中有一組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
雖然發生次數是正確的,但在
總+ =值;
不會生成我正在尋找的輸出。我怎樣才能得到每個指標的總和?
您的總計似乎計算整個文件中的每個條目的總數,而不是每個單獨的索引。以類似的方式,你積累'發生'列,你會想積累'總'列。 –
@ChrisCooper:怎樣才能累積整列?你能幫我用僞代碼嗎? – aries0152
我正在寫一個答案。 –