找出一组输入数据中最大和最小的数据。在一组数据中出现次数最多的数称为mode。要求:输入一组正整数,程序能够找出该组数据的mode。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<unsigned int> data;
unsigned int input; //捕获输入
unsigned int min = 0; //一组数据最小值
unsigned int max = 0; //一组数据最大值
unsigned int mode = 0; //一组数据出现次数最多的值
unsigned int count = 1; //当前数据出现的次数
unsigned int modeCount = 1; //一组数据出现最多的值的次数
cout << "输入一个正整数:";
while (cin >> input) {
//ctrl + z退出循环
data.push_back(input);
if(data.size() == 1){
min = max = input;
}
if(input < min){
min = input;
}
else if (input > max) {
max = input;
}
}
for (int i = 0; i < data.size() - 1; ++i) {
//先把向量中数据从小到大排序
for (int j = i+1; j < data.size(); ++j) {
if(data[i] > data[j]){
int temp;
temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
}
mode = data[0]; //假设第一个数出现的次数最多
for (int i = 1; i < data.size(); ++i) {
if(data[i] != data[i -1]){
count = 1;
}
else {
count++;
if(count > modeCount){
mode = data[i];
modeCount = count;
}
}
}
cout << "modeCount=" << modeCount << endl;
cout << "mode=" << mode << endl;
cout << "max=" << max << endl;
cout << "min=" << min << endl;
return 0;
}