#include #include #include using namespace std ; #define strLen 200 // 定義能讀取字元的數目 char str[strLen] ; stack myStack; //stack int operation( char op) { int temp2, temp1; temp2=myStack.top(); myStack.pop(); temp1=myStack.top(); myStack.pop(); switch(op) { case '+': return temp1 + temp2; case '-': return temp1 - temp2; case '*': return temp1 * temp2; case '/': return temp1 / temp2; case '%': return temp1 % temp2; } } int main() { while(cin.getline(str,50)) { // 輸入 str 字串, 最多 strLen 個字元 (getline : 讀取整行) int num = 0, result = 0 ; myStack = stack(); //清空stack for(int i=0 ; i= 48 && (int)str[i] <= 57) { // 取 0~9 數字 ascii num = num*10 + ((int)str[i])-48 ; } else { // 若是運算元則執行 result = operation( str[i]) ; // 處理須放入堆疊在運算的一類 ex. 20 30 + 40 * myStack.push(result) ; } } else { // 當是空白及前一個是數字時, 放入數字 if (isdigit(str[i-1])) myStack.push(num); num = 0; } } cout << result << endl ; } return 0; }