常見問題:
1. 作不同排序時,用一樣的陣列去排, 也就是說只要做了某一種排序之後,
其他排序都是用已排序的陣列去排
一種比較直覺的解決方式是:
假設裝亂數資料的陣列為int data[n];
每次一執行某種排序前, 先做複製資料的動作, 排序即使用複製資料去作
int copyData[n];
for(int i=0; i<n; i++) copyData[i] = data[i];
/*
拿copyData作排序
*/
2. 應該要讓使用者選擇是否要印出資料! 不然資料量大的時候要等好久...
一種直覺的解決方式:
拉出一個CheckBox元件
當使用者點下按鈕產生亂數資料或作排序
可寫以下程式碼偵測使用者是否有把CheckBox打勾
if(CheckBox1->Checked)// 有打勾
{
/*
印資料
*/
}
else// 沒打勾
{
/*
不印資料
*/
}
設計這樣的功能, 好處在於:
當你想看你的程式是否有正確把資料作排序時
可以將CheckBox打勾, 把資料印出來看是否已排序
如你想要測好幾十萬筆的資料, 看看到底花了多少時間
可以將CheckBox取消勾選, 不用一直等程式印資料
----------------------------------
一些寫程式上的小建議:
1. 資料陣列的大小由動態產生佳, 逼不得已才用寫死的
2. 亂數資料的範圍由使用者自行設定佳
3. 程式碼不要擠擠在一起 (我想何祖鳳老師在程設課時一定有提過)
4. 變數的命名儘量要有意義
5. 寫一些註解絕對有幫助
6. 元件上的顯示文字要有意義
有看過一個case是, Form上4顆按鈕, 分別顯示是Button1~Button4...
7. 如有讓使用者輸入資料的元件, 顯示預設值會比較好
最後是關於作業的資料夾
希望以後不要壓縮檔一解開, 就跑出一堆沒被資料夾包住的程式檔...
也就是希望大家都能照這樣做:
12345678_哀木涕_資二乙.rar
解開之後會是一個名為12345678_哀木涕_資二乙的資料夾
資料夾內才是程式檔
這樣我比較好處理大量的作業
由於moodle收作業非常非常麻煩
如大家都依照命名規則替作業命名
以及用資料夾把程式檔包起來
會替我省下不少時間
否則光下載作業到硬碟+整理每個人的繳交時間+解壓縮作業
就要超過一小時了...
雞排