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

個人作業-四則運算題目生成程序(基於控制臺)

cor gac pre 錯誤 san 實現 eat mdit detail

代碼:四則運算

一、題目描述: 1. 使用 -n 參數控制生成題目的個數,例如 Myapp.exe -n 10 -o Exercise.txt 將生成10個題目。 2. 使用 -r 參數控制題目中數值(自然數、真分數和真分數分母)的範圍,例如 Myapp.exe -r 10 將生成10以內(不包括10)的四則運算題目。該參數可以設置為1或其他自然數。該參數必須給定,否則程序報錯並給出幫助信息。 3. 生成的題目中如果存在形如e1 ÷ e2的子表達式,那麽其結果應是真分數 4. 每道題目中出現的運算符個數不超過3個。 5. 程序一次運行生成的題目不能重復,即任何兩道題目不能通過有限次交換+和×左右的算術表達式變換為同一道題目。例如,23 + 45 = 和45 + 23 = 是重復的題目,6 × 8 = 和8 × 6 = 也是重復的題目。3+(2+1)和1+2+3這兩個題目是重復的,由於+是左結合的,1+2+3等價於(1+2)+3,也就是3+(1+2),也就是3+(2+1)。但是1+2+3和3+2+1是不重復的兩道題,因為1+2+3等價於(1+2)+3,而3+2+1等價於(3+2)+1,它們之間不能通過有限次交換變成同一個題目。
生成的題目存入執行程序的當前目錄下的Exercises.txt文件,格式如下: 1. 四則運算題目1 2. 四則運算題目2 …… 其中真分數在輸入輸出時采用如下格式,真分數五分之三表示為3/5,真分數二又八分之三表示為2’3/8。 6. 在生成題目的同時,計算出所有題目的答案,並存入執行程序的當前目錄下的Answers.txt文件,格式如下: 1. 答案1 2. 答案2 特別的,真分數的運算如下例所示:1/6 + 1/8 = 7/24。 7. 程序應能支持一萬道題目的生成。 8. 程序支持對給定的題目文件和答案文件,判定答案中的對錯並進行數量統計,並會輸出所有題目中重復的題目,輸入參數如下:
Myapp.exe -e <exercisefile>.txt -a <answerfile>.txt -o Grade.txt 統計結果輸出到文件Grade.txt,格式如下: Correct: 5 (1, 3, 5, 7, 9) Wrong: 5 (2, 4, 6, 8, 10) Repeat:2 RepeatDetail: (1) 2,45+32 Repeat 3,32+45 (2) 5,3+(2+1) Repeat 7,1+2+3 解釋: Correct: 5 ----5道題目正確,正確的題號 1,3,5,7,9
Wrong:5 -----5道題目錯誤,錯誤的題號 2,4,6,8,10 Repeat:2 2---組題目重復 (1) 第一組 題號2,題目 45+32 與題號3的題目重復,題號3為 32+45 (2)第二組 題號5,題目 3+(2+1) 與題號7的題目重復,題號7為 1+2+3 二 需求分析   1.實現帶有自然數,真分數,假分數,少於3個運算符的四則等式   2.實現查重,運算      3.擁有萬級別的出解題能力 三、功能設計 基本功能: 通過給定的參數,生成四則運算表達式,對生成的題目進行查重,並給出正確答案。 擴展功能: 設置出題難度,由出題者確定,並設置排行榜,答題者可觀看自己的排名,出題者可看所有答題者的排名。 四、設計實現   paper/CorrectPaperFactory.py 試題批改類   paper/Expression.py 表達式   paper/PaperFactory.py 試題生成類   util/file/FileHandler.py 文件生成   util/math/MathUtil.py 數學工具類   main.py 程序入口 五、測試運行   1.生成一萬道題目     技術分享圖片      技術分享圖片

    2.題目測試

      技術分享圖片

      技術分享圖片

      技術分享圖片

六 小結

  由於時間原因,匆匆花了一下午來實現了本程序,因此並未實現查重功能,另一方面是在生成大量題目的情況出現重復概率及其小,如果需要查重的話就需要耗費大量的內存資源拖累整個程序的運行

七 個人軟件過程

技術分享圖片

  

個人作業-四則運算題目生成程序(基於控制臺)