《C++程序设计原理及实践》第四章 习题16

找出一组输入数据中最大和最小的数据。在一组数据中出现次数最多的数称为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;
}

猜你喜欢

转载自blog.csdn.net/yongshao8/article/details/108641425