首先要了解什麼是字尾式,字尾式是便於機械理解的一種計算表示式,一般我們需要將中綴式轉化為字尾式,中綴式就是我們正常用的算式,例如1+(2-1)*10+8/2這種。
那麼它的字尾式為,1 2 1 - 10 * + 8 2 / +,轉化方式就是先將數字寫出然後根據符號優先順序順序寫符號,例如先計算括號內部的,先乘除再加減等等。具體可以查詢相關資料。
我們主要是介紹用棧實現字尾式計算器。下面貼上**:
#include
#include
#include
#define maxsize 100
typedef
double elemtype;
typedef
struct stack
stack;
void
initstack
(stack *s)
s->top = s->base;
s->stacksize = maxsize;
}void
push
(stack *s, elemtype e)
s->stacksize +=10
;}*(s->top)
= e;
s->top++;}
void
pop(stack *s, elemtype *e)
*e =*--
(s->top);}
intlenth
(stack s)
intmain()
str[i++
]=c;
str[i]
='\0'
;//為了防止錯入
scanf_s
("%c"
,&c);if
(c ==
' ')
}switch
(c)//若是符號就進行以下工作
else
break;}
scanf_s
("%c"
,&c);}
pop(
&s,&d)
;printf
("\n最終值為%lf\n"
, d)
;return0;
}
計算器 逆波蘭表示式
1.實現原理 說明 在我原來做的逆波蘭計算器中,postfix是用來表示逆波蘭表示式的。但是和buptpatriot討論後,想直接實現,下面是直接實現的方法 首先,定義優先順序 function level op 之後,掃瞄輸入序列,讀取輸入的字串,把其中的數字 可能是浮點型,負數 和操作符提取出來...
計算器(表示式計算 字尾表示式實現)逆波蘭表示式
問題描述 從標準輸入中讀入乙個整數算術運算表示式,如24 1 2 36 6 2 2 12 2 2 計算表示式結果,並輸出。要求 1 表示式運算子只有 表示式末尾的 字元表示表示式輸入結束,表示式中可能會出現空格 2 表示式中會出現圓括號,括號可能巢狀,不會出現錯誤的表示式 3 出現除號 時,以整數相...
字尾表示式計算規則 逆波蘭計算器
從左到右掃瞄,將數字壓入堆疊 遇到運算子,依次彈出數字棧中的棧頂元素和次棧頂元素,計算出來的值,再次入棧 依次迴圈掃瞄字尾表示式重複1,2規則,棧中唯一的數字就是字尾表示式的計算結果 這裡主要注意下第二條,計算時 棧頂元素和次棧頂元素 在符號運算時的先後順序 將次棧頂元素放在 運算符號的 左邊 棧頂...