031602431 王源github
關於用戶輸入輸出:算法
算式生成:數組
一個算式由符號和先後「數據域」構成,由此,採用二叉樹來建構算式。而後結合隨機生成數的算法來隨機生成一個算式。函數
class TreePoint{ private: TreePoint *prep; TreePoint *next; char symbol; int priority; int rightpriority; Fraction *num; char newsymbol(int upper); …… };
算式 計算:學習
算出前「數據域」和後「數據域」的值,而後根據符號算出算式的值。整個計算採用遞歸的方法對二叉樹進行中序遍歷測試
算式 輸出:編碼
一樣採用遞歸的方法對二叉樹進行中序遍歷。對於括號的解決採用優先級的方式。一個數的priority及rightpriority均爲4。rightpriority用於「解決減號的後運算域是加號或減號」的狀況及相似狀況。一旦遍歷的時候發現優先級掉落(例如'*'的前數據域出現加法),就增長括號(只在輸出時)。設計
switch (symbol) { case '+':priority=1;rightpriority=1;break; case '-':priority=1;rightpriority=3;break; case '*':priority=2;rightpriority=2;break; case '/':priority=2;rightpriority=3;break; }
關於數:日誌
用Fraction類進行存儲,將整數和真分數所有視爲分數,overload四則運算、邏輯等於。
class Fraction{ private: int nume;// numerator int deno;// denominator …… };
關於其餘要求:
- - -
開始的時候咱們確立了大概的思路,而後開始學習github協做的相關事項。而後咱們各自確立任務,開始實現一個個功能。在我敲代碼的過程當中出現過很多問題,也發現本身知識儲備不夠,因此我是邊學邊敲,感受拖慢了進度,很很差意思
。。。最後我在寫完main函數,在編譯時出現了許多bug。。。其中有幾個我發現本身解決不了,多虧了王源同窗的幫助。。。王源同窗以後還對界面作了調整,看起來更加美觀。再一次王源同窗的幫助(鞠躬)。
最後感謝隊友王源同窗