表示式求值

2021-06-12 00:06:35 字數 1196 閱讀 5534

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#include#includeusing namespace std;

//獲取優先順序

int getpriority(char a)

if(a=='*'||a=='/')

//左括號

return 0;

}//字串轉整數

int str2num(string s)

//操作結果

void operation(stack&result,char c)

if(c == '-')

if(c == '*')

if(c == '/')

}int main()

}else

operate[size] = input.at(i);

number[size] = -1;

++size;

}} //字尾轉字首

for(int j=0;jgetpriority(s.top()))

else

}if(s.empty())}}

}} while(!s.empty())

cout<>input;

}return 0;

}

表示式求值

程式的說明見清華大學出版社 資料結構 c語言版 include include define stack init size 40 define stackincrement 20 define ok 1 define false 0 typedef structs stack typedef st...

表示式求值

既然是表示式求值,自然需要在記憶體中儲存計算結果以及中間值。在 用c語言寫直譯器 一 中提過 變數要求是若型別,而 c 語言中的 view plaincopy to clipboardprint?in basic io.h define memery size 26 typedef enum var...

表示式求值

寫了乙個下午,各種糾結,各種問,終於搞明白了。但是自己還是想出來的一點東西的。很爽歪歪的,哈哈。先貼第一次的 include include include include include includeusing namespace std char data 7 7 int sign char ...