參考 題型範例 - 全國高級中等學校技藝競賽平台 工業類
題目:模擬今彩 539
問題描述
根據台灣彩卷網站的說明,今彩 539 是一種樂透型遊戲,買家必須從 1 ~39 的號碼中任選 5 個號碼進行投注。開獎時,開獎單位將隨機開出五個號碼,這一組號碼就是該期今彩 539 的中獎號碼,也稱為「獎號」。請您依照以下演算法,寫一模擬今彩 539 隨機開出五個號碼以及相關資訊的程式。

  1. 模擬今彩539隨機開出五個不重覆的號碼
  2. 將上述五個不重覆的號碼寫入由使用者指名的文字檔案中
  3. 可以由使用者指名的文字檔案中讀取五個不重覆的今彩539號碼
  4. 計算今彩 539 五個不重覆號碼的算術平均數
  5. 計算今彩 539 五個不重覆號碼的調和平均數
  6. 計算今彩 539 五個不重覆號碼的幾何平均數
  7. 利用選擇排序法對今彩 539 五個不重覆號碼進行由小到大的排序,進而找出今彩 539 五個不重覆號碼的中位數
算術平均數是指將所有資料的總和除以總次數,如以下式子所示:
$\overline{x}=\frac{x_1+x_2+x_3\cdots x_{n-1}+x_n}{n} $

其中 $\overline{x}$ 為算術平均數,$x_1$ 為第 1 個數,$\cdots x_n$ 為第 $n$ 個數。
調和平均數($H$)如以下式子所示:
$H=\frac{n}{\frac{1}{x_1}+\frac{1}{x_2}+\frac{1}{x_3}+\cdots+\frac{1}{x_{n-1}}+\frac{1}{x_n}}$

其中 $x_1$ 為第 1 個數,$x_n$ 為第 $n$ 個數。
幾何平均數(G)如以下式子所示:
$G=\sqrt[n]{x_1\cdot x_2\cdot x_3\cdot\ \cdots\ \cdot x_{n-1}\cdot x_n}$

其中 $x_1$ 為第 1 個數,$x_n$ 為第 $n$ 個數。
選擇排序法是在每一輪迴圈中,都從未排序的陣列中找出最小值,跟最左側的數值交換位置,直到整個陣列排序完畢。

中位數是指,將一組數值資料由小到大排列後,最中間的數值即為中位數。

輸入說明:
  1. 讓使用者輸入要寫入今彩 539 五個不重覆號碼的文字檔
  2. 讓使用者輸入要讀取今彩 539 五個不重覆號碼的文字檔

輸出和功能要求:
  1. 能正確隨機開出五個不重覆的號今彩 539 碼
  2. 能正確將今彩539五個不重覆號碼寫入使用者輸入的文字檔中
  3. 能正確讀入使用者輸入的文字檔中之今彩 539 五個不重覆號碼
  4. 能正確算出今彩 539 五個不重覆號碼的算術平均數
  5. 能正確算出今彩 539 五個不重覆號碼的調和平均數
  6. 能正確算出今彩 539 五個不重覆號碼的幾何平均數
  7. 能展示選擇排序法之排序過程
  8. 能正確算出今彩 539 五個不重覆號碼的中位數

程式執行範例:


此範例隨機產生今彩 539 五個不重覆號碼:4 28 11 38 2,寫入 a539.txt 中,從 a539.txt 中讀取今彩 539 五個不重覆號碼,其算術平均數為 16.6,調和平均數為 5.537471,幾何平均數為 9.869267,在選擇排序過程中,第 1 次從 5 個數(4 28 11 38 2)中選擇最小值 2,跟最左邊的 4 交換,*表示交換,2 的下方 _ 表示數字 2 已經排序好了。第 2 次從未排序的 4 個數(28 11 38 4)中選擇最小值 4,跟未排序最左邊的 28 交換,依此類推,最後排序結果為 2 4 11 28 38。其中位數為 11。
程式的功能,要自己寫,不可以使用現成套件或程式庫,若妳 (你) 的程式都完程上述功能要求,才可以上傳檢查。

因為題意不夠明確,在不影響題目情況下,略作補充。
補充資料:
  1. Console 顯示 "***模擬今彩539***"。
  2. 隨機產生 5 個不重複的號碼。(數字範圍:$1\sim 39$)
  3. Console 顯示 "今彩539之5個1~39號碼:" 後面接著 5 個前面步驟產生的 5 個號碼。
  4. Console 顯示 "請輸入存今彩539之 5 個號碼的檔名:"。
  5. Console 讓使用者輸入檔案名稱,並將前面產生的 5 個號碼空白隔開存到使用者指定的檔案。
  6. Console 顯示 "請輸入要讀今彩539之 5 個號碼的檔案:"。
  7. Console 讓使用者輸入檔案名稱,並讀取檔到資料到陣列。
  8. 計算讀入的 5 個號碼做算術平均數,並在 Console 輸出 "今彩539之 5 個號碼的算術平均數:" 後面接著算術平均數。
  9. 計算讀入的 5 個號碼做調和平均數,並在 Console 輸出 "今彩539之 5 個號碼的調和平均數:" 後面接著調和平均數。
  10. 計算讀入的 5 個號碼做幾何平均數,並在 Console 輸出 "今彩539之 5 個號碼的幾何平均數:" 後面接著幾何平均數。
  11. Console 顯示 "排序前的資料:" 後面接著 5 個讀取到陣列的 5 個號碼。(空白隔開)
  12. Console 顯示 每次一輪選擇排序後,5 個號碼的位置。(空白隔開)
  13. 依上個步驟重複顯示直到排序完成。
  14. Console 顯示 "排序後的資料:",後面接著 5 個排序後的資料,空白隔開。
  15. 找出排序後的中位數,並在 Console 輸出 "今彩539之 5 個號碼的中位數:" 後面接著中位。

範例


     程式碼下載