作業來源
本次作業要求來自於:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2166
我的項目GitHub遠程倉庫地址:https://github.com/BinGuo666/git
總體需求
主要為四則運算,運算符號要大於或等於2個,計算的數值隨機生成,根據用戶輸入題數自動生成題目,根據用戶輸入的計算結果給出判斷,最后計算出最終得分。
項目分析
1.編程語言:javascript
2.題目數目數量:由用戶輸入
3.計算數小於100且大於0
4.給出的算式長度在2-6個運算符之間
5.運算結果向下取整。
6.計算結果為正數且向下取整.結果判斷和計算最終得分
7.結果判斷和計算最終得分
核心算法
因為這這些運算符號,具有優先級的關系,且算式的長度不能確定,所以不能簡單的判斷其符號直接從左到右運算。在這里可以參考到逆波蘭算法。主要新建2個數字和字符棧,將字符串拆分分別放到兩個棧中,如果遇到符號位將前兩位數值進行運算合成一個整體再存回到棧里面,這樣一步步組合,最終得出結果。但由於此次項目沒有運用到括號運算符。所以我簡化了一下,現將符號位(fu)和數字(number)位分別存到兩個數組,在for(i=0;i<fu.length;i++)循環依次判斷符號位是否為‘*’或‘/’如何true,就將number數組的i和i+1位的值作‘*’或‘/’運算再存回到i+1位上,i位數字置為0,再將其對於的i位換成‘+’運算符,這樣,一條復雜的四則混合運算就變成了一條簡單的二則加減法運算。
具體代碼分析
生成隨機字符
生成隨機運算數字
生成隨機運算符數量
主要結果運算
將生成的算式或得出的結果自動添加到頁面中
主要效果展示
自動生成題目:
答案結果判斷: