c語言逆波蘭表示式計算器的實現

2021-10-04 02:38:34 字數 1117 閱讀 7007

首先要了解什麼是字尾式,字尾式是便於機械理解的一種計算表示式,一般我們需要將中綴式轉化為字尾式,中綴式就是我們正常用的算式,例如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規則,棧中唯一的數字就是字尾表示式的計算結果 這裡主要注意下第二條,計算時 棧頂元素和次棧頂元素 在符號運算時的先後順序 將次棧頂元素放在 運算符號的 左邊 棧頂...