c 用棧編寫乙個四則運算計算器 支援括號

2021-10-08 08:04:27 字數 1164 閱讀 1005

用棧編寫四則運算器

包括兩個棧,運算子棧和運算元棧,採用陣列方式

自左向右掃瞄表示式,凡是遇到運算元一律進運算元棧。

當遇到運算子時,如果他的優先順序比運算子棧棧頂元素的優先順序高就入棧。反之,取出棧頂運算子和運算元棧頂的兩個連續運算元運算,並將結果存入運算元棧,然後繼續比較該運算子與棧頂的運算子的優先順序。

字尾表示式規則:從左到右遍歷中綴表示式的每個數字和符號,若是數字就輸出,即成為字尾表示式的一部分;

若是符號,則判斷其與棧頂符號的優先順序,是右括號或優先順序低於找頂符號(乘除優先加減)

則棧頂元素依次出棧並輸出,並將當前符號進棧,一直到最終輸出字尾表示式為止。

資料棧和操作符棧壓棧函式

主函式:

迴圈判斷輸入的數是否是數字 存入乙個存放數字的陣列

判斷輸入是否為'(',不是即將數字壓入棧內

再迴圈判斷操作符的優先順序 flag去標誌優先順序

flag 決定操作符的壓棧和運算元的處理

flag = 0 表示操作符壓棧

flag = -1 進行操作符處理

compare函式:

先判斷棧頂和當前操作符+-*/的優先順序返回0 表示操作符壓棧 返回-1進行操作符處理 返回1是對()進行處理

接著判斷棧是否為空和棧頂是否為(

判斷括號裡面是否運算完

calculator_date函式:

從資料棧中取出兩個運算元進行資料處理

每次操作之後更新資料棧和操作符棧

得到的值結果再壓入資料棧

跑板子的makefile檔案編譯(交叉編譯器用的arm-himix200-linux-)

四則運算計算器

今天做個帶視窗的c 四則運算計算器 輸入中綴表示式 自然表示式 可以用list來放 先把它變成字尾表示式 逆波蘭表示式 用乙個棧放運算子,另乙個棧放字尾表示式 運算子優先順序 1 2 3 4 從左到右遍歷中綴表示式 計算字尾表示式 從左到右掃瞄字尾表示式,如果是數字,放入數字棧。如果是符號,從數字棧...

簡單的四則運算計算器

include stdio.h include stdlib.h include string.h define string length 1000 define number length 40 結構體定義 struct symbol symbol head null,temp null str...

JS 做乙個網頁四則運算計算器

任務 用js寫演算法,實現乙個網頁四則運算計算器 效果 js實現思路 定義乙個用來儲存表示式的全域性變數expr和乙個是否清空的全域性變數clear 點選value為表示式組成部分的按鈕,將value加入到表示式expr中 若按鈕是ac ce則完成相應功能 若按鈕是等號,呼叫表示式計算函式,並將結果...