使用Qt實現計算器功能

2021-09-29 21:13:18 字數 2296 閱讀 4894

之前培訓要求我們使用qt實現計算器的功能,我利用單鏈表實現了計算器的功能,下面將原始碼分享給大家。

我們先將其實現方法以及基本功能給大家列出

因為我是利用鍊錶來實現的功能,所以我接下來要使用鍊錶的知識來講解這一部分。但是本教程不再介紹鍊錶的基本知識。

1、將每個資料存入鍊錶

這部分很簡單,就是我每次鍵入的值在遇到運算符號之前(+、-、*、/、()),都會存入我的乙個全域性變數中,當遇到運算子時,建立兩個鍊錶的記憶體,將我之前鍵入的數字以及運算子分別存入兩個記憶體之中。當等號出現時,開始讀煉表中內容,這就涉及到減減乘除的運算以及其優先順序的判別。

2、加減乘除以及括號的運算以及優先順序的判別

關於優先順序。我們首先檢測優先級別高的運算子,在這個例子中,我們就是首先檢測有沒有括號,有括號首先對括號內的內容進行運算,沒有括號繼續往下走,檢測乘和除,有則運算,沒有繼續往下走計算加和減。

關於運算子的運算。

(1)我們來介紹加減乘除的運算,由於加減乘除的原理是一樣的,所以我們選擇一樣介紹就好了。

圖中就是我鍵入的2+3的內容,當我輸入等號之後,程式找到了+號這個節點,他的上乙個節點和下乙個節點必然是我們需要運算的數字,所以我們找+號的上乙個節點和下乙個節點也就是2和3。因為我們判斷到是加號,所以呼叫「加」這個函式,將3和2加起來,得到的新值為5

將5賦值給2所在的節點位置,注意此時3和加的節點是沒有變的。那麼接下來我們的操作就是將+和3刪除掉,並將5所在的節點的下乙個位址指向3的下乙個位址,我們這個例子中只有兩位數的運算,所以下乙個位址應當是指向等號所在的節點。

此時程式判斷到等號的下乙個節點是null,所以本次的運算結束,輸出到螢幕上為5。

(2)接下來介紹括號內是怎樣運算的。括號內優先級別判斷方法跟括號外是一樣的,所以不再介紹了。

此圖中就是乙個帶括號的計算式子3*(5+3)。我們檢測到有括號,所以首先運算括號中的內容。我們首先檢測到的是右括號,此時我們把右括號設定為一種我們自己定義的頭節點,然後檢測左括號,檢測到左括號把左括號設定成為我們認為的尾節點。然後進行我們自己定義的括號頭節點到尾節點的迴圈。當我們找到加號之後,他的上乙個和下乙個節點必然是我們所要運算的資料,我們將運算好的5+3=8替換掉5所在節點的內容。

式子就簡化成了這個樣子,此時的運算和上面的3+5所進行的是一樣的操作,就不再贅述。

功能

1、加減乘除

2、小括號運算,並且小括號優先順序最高

3、一鍵清零

4、小數點運算

快捷鍵

1、0-9和小數點分別對應鍵盤上0-9和小數點

2、回刪 : backspace

3、清零 : delete

4、左右括號對應鍵盤上左右括號

5、等於 : 數字鍵盤enter

6、加減乘除對應數字鍵盤加減乘除

規則

1、不允許巢狀小括號,只允許一層,但允許有多個

例如 : 1+(2*(3+2))不允許;1+3*(2+3)+4*(2+2)允許。

2、乘法必須加括號,不允許省略

3、首先輸入符號則在首端補0

4、如果以符號結尾則預設符號與等於之間為0

錯誤提示

1、符號書寫錯誤1 : 連續出現兩個或者以上運算子

2、括號錯誤1 : 左右括號總數是奇數

2、括號錯誤2 : 左右括號寫反

3、括號錯誤3 : 連續出現兩個左括號

4、括號錯誤4 : 出現類似n(x+x)

5、括號錯誤5 : 出現類似(x+x)n

QT實現計算器

1 新建calculatorstandard類和工程檔案 2 使用水平布局和把按鍵依次新增 ui介面如下圖所示 3 在calculatorstandard.h中宣告用到的槽函式 private slots void digitclicked 數字按鍵 void addandsubclicked 加減...

Qt實現 計算器

該計算器主要通過lineedit獲取和顯示數字,通過tableview顯示計算過程。通過tableview顯示計算的過程,qlineedit獲取輸入的數字,qcombobox實現不同的計算型別。效果 計算 void mainwindow on btn cal clicked else if resu...

Qt 計算器的實現

介面的 實現 include widget.h include include include w show w setfixedsize w width w height ret a.exec delete w return ret 執行的結果如圖所示 qt 計算器的實現 上面只是暫時生成了計算機...