對隨機數「去重」和「排序」(使用set實現)

2021-07-11 09:15:27 字數 1581 閱讀 2554

明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了n個1到1000之間的隨機整數(n≤100),對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成「去重」與「排序」的工作。

輸入格式

輸入多行,先輸入隨機整數的個數,在輸入相應個數的整數

輸出格式

返回多行,處理後的結果

#include 

#include

using

namespace

std;

int main()

for (auto c: arr)

cout

<< c << endl;

}system("pause");

return

0;}

1.set容器

c++primer第五版11章關聯容器—— pp373

關聯容器支援高效的關鍵字查詢和訪問。

set是乙個要求不重複關鍵字有序儲存的集合。

set的兩個重要屬性:

a. set中每個元素只包含乙個關鍵字

正好適合本題的「去重」要求

宣告格式:

#include

setarr;

b. set按關鍵字有序(從小到大)儲存元素

對應本題的「排序」要求

宣告格式:

arr.insert(input);
2.範圍for語句

c++primer第五版使用基於範圍的for語句—— pp82

如果想對string物件中的每個字元做點什麼操作,目前最好的辦法是使用c++11新標準提供的一種語句,範圍for(range for)語句。這種語句遍歷給定序列中的每個元素並對序列中的每個值執行某種操作,其語法形式是:

for(declaration: expression)

statement

其中,expression部分是乙個物件,用於表示乙個序列。

declaration部分負責定義乙個變數,該變數將被用於訪問序列的基礎元素。每次迭代,declaration部分的變數會被初始化為expression部分的下乙個元素值。

string str(「some」);

for (auto c : str) //對於str的每個字元

cout << c << endl; //輸出當前字元,後面緊跟乙個換行符

通過使用auto關鍵字讓編譯器決定變數c的型別,這裡c是char,每次迭代,str的下乙個字元被拷貝給c,因此該迴圈可以讀作」對於字串str中的每個字元c「執行某某操作。

明明的隨機數 (去重)

明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了n個1到1000之間的隨機整數 n 100 對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成 去重 與 排序 ...

排序 去重 明明的隨機數

題目描述 明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用 計算機生成了n個1到1000之間的隨機整數 n 100 對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然 後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成 去...

產生N個隨機數,使用選擇排序,對隨機數進行排序

include include include define n 100 資料個數 define u 1000 資料個數 int data n 存放資料的陣列 int comp count 0 資料比較次數 int swap count 0 資料交換次數 新增隨機數到陣列 void add data...