C++ 實習期末線上測試:
|
||||||||||
時間: 150分鐘 (請注意時間, 於 12:05 前上傳) 首先你會看到一個完整可以執行的範例應用程式,這個程式可以計算正整數的 infix expression,例如輸入 2 * 3 + ( 5 - 4 ) 的計算結果為 7,順便印出 postfix 的算式表示法 2 3 * 5 4 - +,在計算的過程中需要使用兩個堆疊,一個存放整數運算元 (範圍在 0 ~ 999 之間),另一個存放運算子 +, -, *, /, (, ) 這個線上測試由簡單到繁瑣分為四個階段, 希望你完成的程式簡單描述如下 (這四個程式是分開來的,希望你完成一個之後就上傳,在上傳網頁的 "完成度敘述" 標示是那一個程式):
|
||||||||||
計算正整數的 infix expression 範例應用程式
詳細計算方法請參考先前資料結構實習: 中序運算式計算 演算法簡述如下:
|
||||||||||
1. 請運用 template 的語法,撰寫一個 Stack 類別,可以讓編譯器作出所需要的 Stack<int> 和 Stack<char> 兩個類別 請拷貝上面範例程式中 stack 相關的 push, pop, isEmpty, top 程式 請使用動態記憶體配置,建構元請傳入一個堆疊大小的整數參數 請用 template 語法修改為 template Stack 指定的基本測試如下:iStack 存放整數,cStack 存放字元, 請在建構元中指定大小為 30 int i; for (i=0; i<25; i++) iStack.push(i); for (i=0; i<25; i++) { cout << iStack.top() << ' '; iStack.pop(); } for (i=0; i<25; i++) cStack.push(i); for (i=0; i<25; i++) { cout << cStack.top() << ' '; cStack.pop(); } 放在 main() 函式裡,請加入其它需要的程式碼,並且測試上面的 template Stack, 把測試結果貼在上傳網頁的完成度敘述 請壓縮後在 考試作業區 選擇 2015-6-25 Labfinal 上傳 |
||||||||||
2. 由於在上面的範例應用程式中完全沒有處理不正常的狀況,包括輸入運算式的語法錯誤或是計算演算法的錯誤,請針對上題所寫的 template Stack 來處理可能發生的錯誤,在發生錯誤時,產生 std::out_of_range 例外物件,並在基本測試中捕捉所產生的錯誤,列印錯誤的原因即可 請在適當地方產生 std::out_of_range 例外物件:包括 push 時記憶體配置的不足,pop 已經空了的堆疊這兩種狀況 請在適當地捕捉所產生的例外物件,列印發生錯誤的原因即可, 請修改基本測試程式, 產生錯誤的狀況進行測試, 把測試結果貼在上傳網頁的完成度敘述 請壓縮後選擇 2015-6-25 Labfinal 上傳 |
||||||||||
3. 為了進一步分辨是哪一種堆疊產生的例外,請把這兩個 push_out_of_range 和 pop_out_of_range 類別設計成 template,同樣地請在基本測試中捕捉所產生的錯誤 push_out_of_range<int>, pop_out_of_range<int>, push_out_of_range<char>, pop_out_of_range<char>,列印錯誤的原因即可, 請修改基本測試程式, 產生錯誤的狀況進行測試, 把測試結果貼在上傳網頁的完成度敘述 請壓縮後在 考試作業區 選擇 2015-6-25 Labfinal 上傳 參考答案: test3.cpp, tStack3.h,
tExcept3.h |
||||||||||
4. 修改上面的範例應用程式了,運用前一個步驟產生的 template Stack 和 template Exception 來達成正常的功能和基本的例外處理架構 (同樣地請先列印錯誤的原因即可, 請修改輸入資料, 以及堆疊的大小, 產生錯誤的狀況進行測試, 把測試結果貼在上傳網頁的完成度敘述) 請壓縮後在 考試作業區 選擇 2015-6-25 Labfinal 上傳 參考答案: infixExpression4.cpp,
tStack4.h, tExcept4.h |
||||||||||
不論你做到什麼階段, 請將你的 project (只需保留 .cpp, .h, .sln 以及 .vcxproj 檔案即可; 刪除掉 .suo, .sdf, .filters, .users, debug\ 資料匣, 以及 ipch\ 資料匣下的所有內容) 以 zip/rar/7zip 程式將整個資料匣壓縮起來, 在考試作業區選擇 2015-6-25 Labfinal 上傳 | ||||||||||
|
回
C++ 物件導向程式設計課程
首頁
製作日期: 06/25/2015 by 丁培毅 (Pei-yih Ting) E-mail: pyting@mail.ntou.edu.tw TEL: 02 24622192x6615 海洋大學 電機資訊學院 資訊工程學系 Lagoon |