您的位置:首页 > 其它

统计随机数据组中的相同数值出现的次数

2014-09-11 10:27 435 查看
说明:该程序是对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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐