上次作业的升级版
好好好
211606375 牛振乾
211606351 曾茜
一、預估與實際
| Planning | 計劃 | ||
| ? Estimate | ? 估計這個任務需要多少時間 | 40 | 40 |
| Development | 開發 | 900 | 1000 |
| ? Analysis | ? 需求分析 (包括學習新技術) | 60 | 100 |
| ? Design Spec | ? 生成設計文檔 | 60 | 90 |
| ? Design Review | ? 設計復審 | 40 | 60 |
| ? Coding Standard | ? 代碼規范 (為目前的開發制定合適的規范) | 20 | 30 |
| ? Design | ? 具體設計 | 200 | 230 |
| ? Coding | ? 具體編碼 | 400 | 400 |
| ? Code Review | ? 代碼復審 | 40 | 60 |
| ? Test | ? 測試(自我測試,修改代碼,提交修改) | 60 | 90 |
| Reporting | 報告 | 60 | 60 |
| ? Test Repor | ? 測試報告 | 30 | 40 |
| ? Size Measurement | ? 計算工作量 | 30 | 30 |
| ? Postmortem & Process Improvement Plan | ? 事后總結, 并提出過程改進計劃 | 20 | 20 |
| 合計 | 1130 |
二、需求分析
我通過百度的方式了解到,小學三年級數學有如下的幾個特點:
- 有混合運算
- 可以有括號的出現
經過分析,我認為,這個程序應當:
- 減法運算的結果不能有負數
- 除法運算除數不能為0,不能有余數
- 運算符在2~4個
- 可以有括號
三、設計
1.設計思路
- 關鍵流程圖
2.實驗方案
中綴表達式轉換為后綴表達式
你需要設定一個棧SOP,和一個線性表 L 。SOP用于臨時存儲運算符和分界符( ,L用于存儲后綴表達式。
遍歷原始表達式中的每一個表達式元素
(1)如果是操作數,則直接追加到 L中。只有 運算符 或者 分界符( 才可以存放到 棧SOP中
(2)如果是分界符
Ⅰ 如果是左括號 ( , 則 直接壓入SOP,等待下一個最近的 右括號 與之配對。
Ⅱ 如果是右括號),則說明有一對括號已經配對(在表達式輸入無誤的情況下)。不將它壓棧,丟棄它,然后從SOP中出棧,得到元素e,將e依次追加到L里。一直循環,直到出棧元素e 是 左括號 ( ,同樣丟棄他。
(3)如果是運算符(用op1表示)
Ⅰ如果SOP棧頂元素(用op2表示) 不是運算符,則二者沒有可比性,則直接將此運算符op1壓棧。 例如棧頂是左括號 ( ,或者棧為空。
Ⅱ 如果SOP棧頂元素(用op2表示) 是運算符 ,則比較op1和 op2的優先級。如果op1 > op2 ,則直接將此運算符op1壓棧。
如果不滿足op1 > op2,則將op2出棧,并追加到L,重復步驟3。
也就是說,如果在SOP棧中,有2個相鄰的元素都是運算符,則他們必須滿足:下層運算符的優先級一定小于上層元素的優先級,才能相鄰。
最后,如果SOP中還有元素,則依次彈出追加到L后,就得到了后綴表達式。
摘抄自【算法】表達式求值--逆波蘭算法介紹
四、編碼
請說明你如何按照設計思路進行編碼,并記錄你在開發中遇到的問題,與解決過程。
1.調試日志
記錄編碼調試的日志,請記錄下開發過程中的 debug 歷程
比如:
- 將代碼全部設為靜態私有變量,方便使用
在逆波蘭犯法中要設立優先級
2.關鍵代碼
private static String ReversePolish (String[] strArr){
String str = "+-/";
Stack stack = new Stack();
//遍歷數組中的每一個元素
for(String s : strArr){
//如果是數字,放入棧中
if(!str.contains(s)){
stack.push(s);
}
else{
int a = Integer.valueOf(stack.pop());
int b = Integer.valueOf(stack.pop());
switch(s){
case "+" :
stack.push(String.valueOf(a+b));
break;
case "-" :
stack.push(String.valueOf(a-b));
break ;
case "" :
stack.push(String.valueOf(a*b));
break;
case "/" :
stack.push(String.valueOf(a/b));
break ;
}
}
}3.代碼規范
- 減少代碼嵌套次數
- 盡量不要用參數來帶回方法運算結果
- 避免使用類似名字,或僅僅是大小寫不同的名字
循環計數器 通常采用i,j,k或者counter都可以接受
五、測試
六、總結
結對對我們還是有好處的,有時候可以一個人不會的知識點林一個人就可以馬上上手進行講解,但是也有一些壞處,就是在一些問題上有分歧,或者兩個人都不會的知識點,因為我們遵循男女搭配干活不累的原則——所以導致我們有時候只能進行語音,一些問題不能很好的解決。所以在下次作業上總店解決這些問題。這次就先附上語音的截圖啦~~~~~~~
轉載于:https://www.cnblogs.com/112233niu/p/9672263.html
總結
- 上一篇: composer不成功的原因
- 下一篇: SGX技术与SGX攻击