C C 的中綴轉字尾並求值的實現

2021-07-24 14:50:59 字數 2102 閱讀 4530

description

輸入乙個中綴算術表示式s,s中的運算元為0到9,只含+,-和*,/運算,也可能含有括號(),運算子的計算順序和實際四則運算的計算順序相同. 請輸出與s等價的字尾表示式,注意輸出結果不要含有多餘的括號或空格.

input

輸入有多組資料.

每組資料是乙個中綴表示式s,s的長度不超過50. 輸入的s保證合法,而且不包含多餘的空格或製表符.

輸入以#號結束.

output

對於每個中綴表示式,輸出轉換後的字尾表示式,每個輸出佔一行.

sample input

1 1+2*3

(1-2)/3

#sample output

1 123*+

12-3/

#include 

#include

#include

#include

using

namespace

std;

bool isbetter(char a, char b)

int main() else else

if (input[i] == ')')

op.pop();// 將左括號彈出不輸出

} else else else }}

op.push(input[i]); // 將當前運算子入棧}}

} else }}

cout

<< endl;

} return

0;}

本題目將上面的轉換封裝為函式,並做了適當的處理以將不同的運算數分開

description

輸入中綴算術表示式s,s中的運算元為非負整數,只含+,-和*,/運算,也可能含有括號(),運算子的計算順序和實際四則運算的計算順序相同. 輸出表示式s的值. 注意除法運算只取整數部分,例如1/2=0.

input

輸入有多組資料.

每組資料是乙個算術表示式s,s的長度不超過100. 輸入的s保證合法,而且不包含多餘的空格或製表符. s的運算元、中間結果和最終結果都不會超過int型別的範圍,也不會出現除數為0的情況.

輸入以#號結束.

output

對於每個算術表示式s,輸出s的值,每個輸出佔一行.

sample input

1 478+522

(478+522)*10

1/2-1

#sample output

1 1000

10000

-1

#include 

#include

using

namespace

std;

bool isbetter(char a, char b);

string topostifix(string input);

int calculate(int x, int y, char t_op);

int main()

} else else

// 遇到運算子,計算出新的值,然後入棧

int num1 = num.top();

num.pop();

int num2 = num.top();

num.pop();

int ans = calculate(num2, num1, postfix[i]);

num.push(ans);}}

}if (mark == 2) else

if (!num.empty())

}return0;}

bool isbetter(char a, char b)

int calculate(int x, int y, char t_op)

string topostifix(string input) else else

if (input[i] == ')')

op.pop();// 將左括號彈出不輸出

} else else

op.push(input[i]); // 將當前運算子入棧}}

}} else }}

return tmp;

}

中綴轉字尾及字尾求值

中綴表示式轉字尾表示式 include include include include include include includeusing namespace std const int maxn 1000 10 typedef char typename struct node typede...

c 實現中綴轉字首,中綴轉字尾,字尾表示式求值

思想 用兩個棧實現,規則如下 1 初始化兩個棧 運算子棧s1和儲存中間結果的棧s2 2 從右至左掃瞄中綴表示式 3 遇到運算元時,將其壓入s2 4 遇到運算子時,比較其與s1棧頂運算子的優先順序 4 1 如果s1為空,或棧頂運算子為右括號 則直接將此運算子入棧 4 2 否則,若優先順序比棧頂運算子的...

逆波蘭中綴轉字尾表示式並求值

建立鏈棧 linkstack.h pragma once typedef int elemtype typedef struct node node typedef struct linkstack linkstack,ptrstack 初始化 void init ptrstack stack 入棧...