编程珠玑: 13章 搜索 13.1生成[0 ,maxval]范围内m各随机整数的有序序列 -------解题总结

来源:互联网 发布:青岛太阳软件 编辑:程序博客网 时间:2024/06/02 20:54
#include <iostream>#include <stdio.h>#include <set>using namespace std;/*问题:生成[0 ,maxval]范围内m各随机整数的有序序列分析:用一个set来确保不重复,用一个随机函数来确保得到指定范围内的随机数输入:100(元素最大值) 10(输出的元素个数)输出;输出10个0~100且有序的元素关键:1实现一个集合set,包含插入,有序输出到数组中class IntSetSTL{private:set<int> _datas;int _maxSize;int _maxVal;public:IntSetSTL(int maxElements , int maxVal){_maxSize = maxElements;_maxVal = maxVal;}*/class IntSetSTL{private:set<int> _datas;int _maxSize;int _maxVal;public:IntSetSTL(int maxElements , int maxVal){_maxSize = maxElements;_maxVal = maxVal;}//插入元素void insert(int t){if( size() > _maxSize){return;}_datas.insert(t);}int size(){return _datas.size();}//将元素有序输出到v数组中void report(int* v){int j = 0;for(set<int>::iterator it = _datas.begin() ; it != _datas.end() ; it++){v[j++] = *it;}}};int randRange(int min ,int max){if(min > max){int temp = min;min = max;max = min;}return ( rand() % (max - min + 1) + min );}void print(int* array , int size){if(NULL == array || size <= 0){cout << "no result" << endl;return;}for(int i = 0 ; i < size ; i++){cout << array[i] << " ";}cout << endl;}void process(){int maxVal , size;while(cin >> maxVal >> size){IntSetSTL myset(size , maxVal);int* pArr = new int[size + 1];while(myset.size() < size){int value = randRange(0 , maxVal);myset.insert(value);}myset.report(pArr);print(pArr , size);delete[] pArr;}}int main(int argc , char* argv[]){process();getchar();return 0;}

0 0
原创粉丝点击