統計隨機數據組中的相同數值出現的次數

說明:該程序是對C++ primer中的某一個程序(P17)功能的更改,使之可以統計不一定是連續出現某一數值的出現次數,算是一個小練習

#include <iostream>

#include <vector>
using namespace std;

int main()
{
vector<int> val_vec;
vector<int> cnt_vec;
int currVal = 0, val = 0;

cout<<"Enter some numbers:"<<endl;

if (cin>>currVal) // 讀取第一個數值
{
int cnt = 1;             // 保存正在處理的數據
bool istate = false;  // 標示着先前是否已經出現過該數據

while(cin>>val)
{
if (currVal == val){     
cnt++;
}
else
{
// 判斷正在處理的數據先前是否出現過
for (unsigned i = 0; i < val_vec.size(); ++i)
{
// 如果先前有出現過,那麼就與之前的次數累加
if (currVal == val_vec[i])    
{
int num = cnt_vec[i];
cnt += num;
cnt_vec[i] = cnt;
istate = true;
}
}

// 如果先前沒有出現過,那麼將之保存
if (!istate)
{
val_vec.push_back(currVal);
cnt_vec.push_back(cnt);
}

// 迭代參數還原
currVal = val;
cnt = 1;
istate = false;
}
}

// 處理最後出現的數據
for (unsigned i = 0; i < val_vec.size(); ++i)
{
if (val == val_vec[i])
{
int num = cnt_vec[i];
cnt += num;
cnt_vec[i] = cnt;
istate = true;
}
}
if (!istate)
{
val_vec.push_back(currVal);
cnt_vec.push_back(cnt);
}
}

// 打印所有數據以及出現的次數
for (unsigned i = 0; i < val_vec.size(); ++i)
{
cout<<val_vec[i]<<" occurs "<<cnt_vec[i]<<" times;"<<endl;
}

std::cin.get();
std::cin.get();

return 0;
}
發佈了8 篇原創文章 · 獲贊 11 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章