中綴表示式

2022-08-21 21:54:09 字數 1366 閱讀 1178

輸入乙個中綴表示式(由 0-9組成的運算數、加「+」、減「-」、乘「×」、除「/」四種運算子、左右小括號組成。注意「-」也可作為負數的標誌,表示式以「@」作為結束符),判斷表示式是否合法,如果不合法,請輸出「no」;否則請把表示式轉換成字尾形式,再求出字尾表示式的值並輸出。

注意:必須用棧操作,不能直接輸出表示式的值。

輸入格式:

第一行為乙個以@結束的字串。

輸出格式:

如果表示式不合法,請輸出「no」,要求大寫。

如果表示式合法,請輸出計算結果。

輸入樣例:

1+2×8-9@

輸出樣例:

8

(注意使用棧)

這道題應先將中綴轉字尾在進行計算,**如下:

#include #include 

#include

#include

using

namespace

std;

int priority(char c)//

比較優先順序

string

s;stack

opt;

string

ans;

stack

a; intbox,box1,box2,box3;

int u[1000000

];int

x,y;

intmain()}}

for(int i=0;i)

i--;

ans+="";

}else

if(s[i]=='

(')//

為左括號,直接入棧

opt.push(s[i]);

else

if(s[i]=='

)')//

為右括號,將棧頂元素出棧,直到碰到左括號

opt.pop();

//將左括號出棧

}

else

if(opt.empty())//

棧為空,將運算子直接入棧

else

opt.push(s[i]);

//將運算子入棧

} }

while(!opt.empty())//

將棧中的剩餘元素出棧

for(int i=0;i)

if(box!=0

)a.push(box);

if(ans[i]>=42&&ans[i]<=47

)

}cout

;

return0;

}

中綴表示式

實現 直接計算中綴表示式 不含括號 include include includeusing namespace std 運算符號優先順序比較 加減為低階運算,乘除是高階運算 先算乘除 return 1 means can calculate,else can not.int getpriority...

中綴表示式 字尾表示式

中綴表示式就是 a b 這樣的,運算子在兩個數的中間 字尾表示式就是 a b 這樣的,運算子在兩個數後面 再細分一下 中綴表示式 字尾表示式 a b c a b c a b c a b c a b c a b c a b c a b c a b c d e a c a b c d e a c emm...

中綴表示式 字尾表示式

數學表示式稱為中綴表示式,符合人的思考習慣 1 2 3運算子放在數字後面,符合計算機運算 123 遍歷中綴表示式中的數字和符號 左括號 入棧 運算符號 需要與棧頂符號進行優先順序比較 遍歷結束 將棧中所有符號彈出並輸出。例 中綴表示式 1 2 5 3 4 2 1 1 數字1直接輸出 結果 1 棧 空...