基於棧的中綴算式表示式求值(雙棧實現)

2021-09-22 21:39:41 字數 968 閱讀 6126

問題描述:輸入乙個中綴表示式,求解表示式的值。參加運算的數為double型別且為正數。

輸入:對於乙個算術表示式,每乙個表示式均以「=」結尾。當表示式只有乙個「=」時,輸入結束。當表示式只有乙個「=」時,輸入結束。參加運算的數字double型別。

輸出要求:對於每組資料輸出一行,為表示式運算結果。輸出保留兩位小數。

輸入樣例

2+2=

20*(4.5-3)=

輸出樣例:

4.00

30.00

atof的用法:

atof():double atof(const char *str );

功 能: 把字串轉換成浮點數

str:要轉換的字串。

返回值:每個函式返回 double 值,此值由將輸入字元作為數字解析而生成。 如果該輸入無法轉換為該型別的值,則返回值為 0.0。

函式說明 :atof()會掃瞄引數str字串,跳過前面的空格字元直到遇上數字或正負符號才開始做轉換而再遇到非數字或字串結束時('\0')才結束轉換,並將結果返回,str字串可包含正負號、小數點或e(e)來表示指數部分。

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

int cmp(char c)

void compute(stack&num,stack&op)

op.pop();

}int main()

else //當前字元比棧頂字元優先順序要低或者級別相同,那就出棧計算}}

op.pop();

printf("%.2f\n",num.top());

num.pop();

} return 0;

}

基於棧的中綴算術表示式求值

實驗目的 1.掌握棧的基本操作演算法的實現,包括棧初始化 進棧 出棧 取棧頂元素等。2.掌握利用棧實現中綴表示式求值的演算法。實驗內容 問題描述 輸入乙個中綴算術表示式,求解表示式的值。運算子包括 參加運算的數為 double型別且為正數。要求 直接使用中綴算術表示式進行計算,不能轉換為字尾或字首表...

基於棧的中綴算術表示式求值

include include include include using namespace std typedef struct stacknode lstack 兩個棧,乙個是字元,乙個是數字,先判斷是什麼字元,然後呼叫不同的函式 typedef struct data struct stac...

棧的應用 表示式求值(雙棧)

中綴表示式是正常的表示式形式,例如 4.99 1.06 5.99 6.99 1.06 字尾表示式是針對中綴表示式而言的,可以理解為 操作符在兩個運算元之後。例如 4.99 1.06 5.99 6.99 1.06 表示式的求值規則為 設兩個棧,n,o,分別儲存運算元和操作符。從左到右掃瞄中綴表示式 遇...