中綴表示式求值

2021-07-08 14:56:55 字數 1158 閱讀 6564

計算(calc.cpp)

【問題描述】

小明在你的幫助下,破密了ferrari設的密碼門,正要往前走,突然又出現了乙個密碼門,門上有乙個算式,其中只有「(」,「)」,「0-9」,「+」,「-」,「*」,「/」,「^」求出的值就是密碼。小明數學學得不好,還需你幫他的忙。(「/」用整數除法)

【輸入】

輸入檔案calc.in共1行,為乙個算式。

【輸出】

輸出檔案calc.out共1行,就是密碼。

【輸入樣例】calc.in

1+(3+2)*(7^2+6*9)/(2) 

【輸出樣例】calc.out

258 

【限制】

100%的資料滿足:算式長度<=30 其中所有資料在231-1的範圍內。

#include#include#include#include#includeusing namespace std;

long long ans;

int number[100],i,pd,len,x,tot,j,l,n,yx[60];

char symbol[100],s[100];

void init()//預處理每種運算子的優先順序

int mys()//冪運算

void khcl()//將棧頂的兩個元素彈出計算後重新壓入棧中

tot--;

n--;

}int main()

while(i=48&&s[i]<=57)//處理數字,加入棧中

if (pd==1)

while(s[i]=='(')//左括號直接入棧

if(s[i]==')')//遇到右括號計算括號中的值

else

if (s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/'||s[i]=='^')

else

tot++;

symbol[tot]=s[i];

}i++;}}

while(tot>0)//判斷棧是否為空,若不為空繼續計算

khcl();

printf("%d",number[1]);

return 0;

}

中綴表示式求值

中綴表示式用於計算乙個表示式,比如計算器 就是這樣實現的 這兒是用棧的資料結構來實現的。首先輸入乙個字串,表示乙個表示式,然後用乙個棧儲存數字,另外乙個棧儲存符號 如果當前運算子優先順序比棧頂元素優先順序高,則入棧,若當前運算子優先順序小於等於棧頂運算子優先順序,則從數字棧中彈出兩個元素,從符號棧中...

中綴表示式求值

表示式求值都需要2個棧。乙個是符號棧,另乙個是數字棧。拿上面的字尾式45 來說,咱們剛才將表示式從4 5轉換到45 的過程是咱們一眼就能看出來的,但是計算機不能像咱們這樣做,因為他不會。他只會從表示式的開頭,順序掃瞄表示式的每乙個字元,它不能像咱們一樣 一眼就 看 出來。計算機是如何轉換的呢?1.從...

中綴表示式求值

include define maxsize 100 可以用中綴表示式求值 using namespace std 計算整數範圍的表示式的值,值的範圍不侷限於0到79 typedef struct sqstack void initstock sqstack s 構造空棧 char gettop s...