題目要求:像《構建之法》的人物阿超那樣,花二十分鐘寫乙個能自動生成小學四則運算題目的
命令列 「軟體
」, 分別滿足下面的各種需求。
下面這些需求都可以用命令列引數的形式來指定:
a) 一次可以出一千道道題目,並且沒有重複的,把題目寫入乙個檔案中。我們大家都知道,
(1+2)
和(2+1)
是重複的題目。
b) 當你有多於乙個運算子的時候,如何對乙個表示式求值?逐步擴充套件功能和可以支援的表示式型別,最後希望能支援下面型別的題目 (最多
10 個運算子,括號的數量不限制):
25 - 3 * 4 - 2 / 2 + 89 = ?
1/2 + 1/3 - 1/4 = ?
(6 - 4
) *
(3 + 28) =
?c) 除了整數以外,還要支援真分數的四則運算。 (例如:
1/6 + 1/8 = 7/24
)d) 讓程式能接受使用者輸入答案,並判定對錯。 最後給出總共 對
/錯 的數量。
e) 到目前為止,這個程式的介面都是中文的, 隨著這個應用大受歡迎,別的國家的使用者也要用,那麼怎麼能高效地讓這個
支援不同文字介面互換呢?你是在程式裡面不斷插入
if ... else ...
來處理中英文,還是有高效率,可以擴充套件的辦法?這個程式最終會擴充套件為支援
10種語言,而且每個語言的使用者需要符合他們文化的圖示。請問你還是用
if/else
來解決麼?
一.計畫個人專案花費時間
psp2.1
personal software process stages
time
planning
計畫
10min
· estimate
· 估計這個任務需要多少時間
10min
development
開發
· analysis
· 需求分析 (包括學習新技術)
20min
· design spec
· 生成設計文件
10min
· design review
· 設計複審 (和同事審核設計文件)
15min
· coding standard
· **規範 (為目前的開發制定合適的規範)
10min
· design
· 具體設計
30min
· coding
· 具體編碼
1h· code review
· **複審
10min
· test
· 測試(自我測試,修改**,提交修改)
20min
reporting
報告
· test report
· 測試報告
20min
· size measurement
· 計算工作量
10min
· postmortem & process improvement plan
· 事後總結, 並提出過程改進計畫
10min
合計215min
二.實際個人專案花費時間
psp2.1
personal software process stages
time
planning
計畫
20min
· estimate
· 估計這個任務需要多少時間
20min
development
開發
· analysis
· 需求分析 (包括學習新技術)
60min
· design spec
· 生成設計文件
20min
· design review
· 設計複審 (和同事審核設計文件)
15min
· coding standard
· **規範 (為目前的開發制定合適的規範)
10min
· design
· 具體設計
40min
· coding
· 具體編碼
2h· code review
· **複審
10min
· test
· 測試(自我測試,修改**,提交修改)
20min
reporting
報告
· test report
· 測試報告
20min
· size measurement
· 計算工作量
15min
· postmortem & process improvement plan
· 事後總結, 並提出過程改進計畫
15min
合計380min
三.程式改進
程式的改進主要為由算式得出答案改為由答案拆分成算式,避免了括號的插入與運算等難題,思路較為清晰簡單。
程式效能分析:
四.測試用例
由程式生成的題目與答案檔案如下:
整數:
分數:
由於由答案推出算式,測試用例全部正確。
五.個人心得體會
坦率的講,這次真的小看了這個專案,原本以為就是乙個類似於計算器的程式,準備寫乙個ios程式,為此浪費了大半個上午的時間,後來還是因為晚上臨時有事時間不充足和一些技術原因,還是暫時放棄,選擇使用
c++先完成任務,後期有時間完成這個程式。
簡單的四則運算,實際上有很多值得思考的地方。
1. 如何優雅的插入括號?
2. 如何優雅的完成帶括號的運算?
3. 如何完成真分數的運算?
4. 如何完成加減乘除的混合運算?
同學們雖然使用不同的語言,但是大致的思路一致,就是先完成隨機算式的生產,接著完成算式的運算,然後判斷運算結果與輸入結果是否一致,整個過程清晰但需要解決的問題很多。
在前期做了大量的設計工作,花費了大量時間後,我決定採用逆推的方法,便是由隨機答案生成隨機算式。大致思路採用遞迴演算法,以隨機生產數ans為答案,再生成隨機
f,根據
f的範圍絕定以
ans進行哪種運算操作,最後得出乙個算式
str。該方法難點在於分數的拆分,拆分演算法還需要進一步優化。
總結:由於個人對專案的不重視,沒有對專案的需求進行仔細的分析,在前期設計階段花費了大量的時間,這是乙個很嚴重的錯誤,此次在短時間內體驗了乙個完整的專案流程,自己的抗壓能力還是不足,在設計階段的失誤導致在編碼階段錯誤連連,**規範性差,可讀性差,在以後的專案實踐當中,必須吸取經驗,特別是在專案設計階段犯的錯誤必須要改正。
程式截圖:
二柱子的四則運算(個人專案3)
題目 二柱子將做好的專案交給了老師,幾天後又得到了新的需求 2 答題結束後,可以判斷對錯。3 並將錯題的結果儲存起來。設計思路 整理要求,利用srand time null 來進行迴圈,來計算題目數量,選擇公式。還要控制 資料範圍,運算加減乘除法四則運算,判斷負數和真分數並進行計算,最後判斷正錯和統...
個人專案(四則運算程式)總結
一.基本要求 將10 20道四則運算題目寫入文件,程式讀取並輸出題目,同時計算出正確結果。使用者對每道題目計算答案,答對進行提示,答錯輸出正確結果。分別記錄回答正確 錯誤的數目並輸出。四則運算題目基本要求 1.加減乘除四種運算全部出現 3.算式中要出現括號 2.出現真分數和假分數的運算 4.最少出現...
四則運算(小專案)
實現下述題目,重點是程式通順,沒有bug。先做基本功能,慢慢加內容,注意模組化設計。按照三到四次課的時間來完成應該差不多,大家先做做看,最後做完再交,注意我有查重系統。題目 小學生測驗 面向小學1 2年級學生,隨機選擇兩個整數進行四則運算,要求學生解答。功能要求 1 電腦隨機出題,題目數使用者設定,...