2017《面向對象程序設計》寒假做業三

031602435 肖逸清git

031602431 王源github

設計思路

關於用戶輸入輸出算法

  • 對用戶輸入用字符串進行處理,處理了設想中的錯誤輸入
  • 用名爲prompt的int型變量的值來決定用戶收到的提示語言(1爲中文,2爲英文)
  • 解題報告採用名爲wrongquenum的數組來存儲用戶的錯誤題目編號,在最後經過for循環將錯誤題目呈現出來。總結用名爲corrnum的int型變量存儲正確題目數量,wrongnum存儲錯誤題目數量。

算式生成數組

一個算式由符號和先後「數據域」構成,由此,採用二叉樹來建構算式。而後結合隨機生成數的算法來隨機生成一個算式。函數

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
……
};

關於其餘要求

  • 對根節點特殊處理,保證至少一個數據域是子算式,從而生成「混合運算」。
  • 對層數進行記錄並限制,使算式不至於過於龐大
  • 生成樹後立刻進行答案計算,保證算式的合法性,以及「答案是整數」的要求

編碼規範

  • 採用C++,每一個類都有.h .cpp兩個文件
  • 使用Tab縮進,tab size =4
  • define不須要的時候undef之

程序實現和結果測試的截圖

中文
英文
e存在
錯誤運行結果


github的提交連接和提交日誌截圖

github連接
1
2


兩位同窗的分工和協做證據截圖

協做截圖
- - -

合做過程

開始的時候咱們確立了大概的思路,而後開始學習github協做的相關事項。而後咱們各自確立任務,開始實現一個個功能。在我敲代碼的過程當中出現過很多問題,也發現本身知識儲備不夠,因此我是邊學邊敲,感受拖慢了進度,很很差意思
。。。最後我在寫完main函數,在編譯時出現了許多bug。。。其中有幾個我發現本身解決不了,多虧了王源同窗的幫助。。。王源同窗以後還對界面作了調整,看起來更加美觀。再一次王源同窗的幫助(鞠躬)。


合做體會

  • 感受有了隊友就有種責任感,由於怕拖後腿因此感受效率高了很多。
  • 這麼多代碼若是是我一我的確定要花大量時間,因此有隊友能夠減小不少工做。
  • 有一個厲害的隊友感受很棒,能夠從他那裏學到不少東西。
  • 因爲我一開始考慮不周,沒有想到用戶在選擇提示語言時亂輸的問題,還好最後隊友注意到了這一點,加了一條語句。也是我想固然地認爲用戶會遵照提示操做,因此沒有去想用戶給出了不符合要求的輸入該如何處理。。從此會注意這點。
    - - -

最後感謝隊友王源同窗

相關文章
相關標籤/搜索