description
輸入中綴算術表示式s,s
中的運算元為非負整數,只含+,
-和*,
/運算,
也可能含有括號
(),運算子的計算順序和實際四則運算的計算順序相同
. 輸出
表示式s
的值.
注意除法運算只取整數部分,例如
1/2=0.
input
輸入有多組資料.
每組資料是乙個算術表示式s,s的長度不超過100. 輸入的s保證合法,而且不包含多餘的空格或製表符. s的運算元、中間結果和最終結果都不會超過int型別的範圍,也不會出現除數為0的情況.
輸入以#號結束.
output
對於每個算術表示式s,輸出s的值,每個輸出佔一行.
sample input
1sample output478+522
(478+522)*10
1/2-1
#
11000
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 ...