1. 程式人生 > >四則運算題目生成程序(基於控制臺)

四則運算題目生成程序(基於控制臺)

net 分析 spec 不能 plan 優先 能夠 報告 結構

(項目文件地址:https://git.coding.net/Aes/Exp1.git)

一、需求分析

1.將用戶的輸入作為參數,生成不同數量的一定範圍的算式

2.算式的運算符數量不超過3個(隨機生成1-3運算符的算式)

3.判斷用戶的答案是否正確

4.將題目和答案輸出到文件中

5.使用分數計算,並且要保證生成的算式不重復

二、設計思路

1、算式生成:

隨機生成一個參數m,控制運算符的數量,則數字數量為m+1。隨機生成一個數字,一個運算符的規律來生成算式,最後得到三個數組,一個存放運算符,一個存放數字,還有一個存放完整的算式。

2、計算優先運算符

根據存放運算符的數組來進行遍歷,判斷之前是否出現過”*/”符號,再根據當前數組遍歷的位置,來生成一個算符優先的數組。數組元素存放的是,優先計算的符號的下標。如

:“2+3*5-6”這個算式中,先算*,再算+和-,所以優先符數組裏面是元素是:1,0,2。

3、計算算式的結果

思路就是,例如:1+2*3-4,根據計算出來的優先數組,先算2*3,結果存入result,2和3計算過後,就將這兩個數的位置0,再算1+2,2已經置0了,所以是1+result,然後置0,算3-4,3已經置0了,所以算result-4,最後的就是結果。

但是,我又發現了這個想法對於1*2+3*4或者1+2+3*4,這種式子來說,(優先符為021或者201)是不能計算出正確結果的,所以,我就講這種情況特地來計算,算出左右兩邊的,再來算中間的操作符。

4、計算結果精度

BigDecimal類來進行精確的計算,直接使用a*b,或者a/b的double型計算,計算結果經常會不準確。

5、文件輸出

將算式和答案存入list中,寫一個函數,用list作為函數的參數,遍歷將list中的內容輸出文件

三、運行截圖

技術分享技術分享技術分享

四、總結

經過同學的提醒才知道原來可以將中綴表達式轉換為後綴表達式,然後用棧數據結構來進行計算。這樣更簡單方便。而不用像我的方法一樣,要思考各種的情況。而且使用棧能夠更好的計算帶有括號的算式。

括號、分數、查重功能沒有實現。

五、PSP表格

PSP2.1

Personal Software Process Stages

Time Senior Student

Time

Planning

計劃

5

5

· Estimate

估計這個任務需要多少時間

5

5

Development

開發

420

512

· Analysis

需求分析 (包括學習新技術)

20

15

· Design Spec

生成設計文檔

10

5

· Design Review

設計復審

10

10

· Coding Standard

代碼規範

20

2

· Design

具體設計

40

60

· Coding

具體編碼

240

300

· Code Review

代碼復審

20

0

· Test

測試(自我測試,修改代碼,提交修改)

60

120

Reporting

報告

30

6

·

測試報告

20

2

·

計算工作量

5

1

·

並提出過程改進計劃

5

3

(單位:分鐘)

四則運算題目生成程序(基於控制臺)