google "C++ stack", "C++ stringstream"學到的
關於後序運算式 https://market.cloud.edu.tw/content/senior/computer/ks_ks/et/datastruct/compute/compute.htm
#include <iostream>
#include <stack>
#include <sstream>
using namespace std;
int main(int argc, char *argv[]){
string ins;
int op1, op2, ans, i, j, k;
stringstream ss;
while(getline(cin, ins)){
i = j = k = 0;
stack<int>myStack;
while(i<ins.length()){
if(ins[i] >= '0' && ins[i] <= '9'){ // 數字
for(j=i+1; j<ins.length(); j++) //找出所在區段
if(ins[j] == ' ')
break;
string tmp = ins.substr(i, j-i); //用substr抓出數字
ss.str("");
ss.clear(); //google到的結果說要這樣清空
ss << tmp;
ss >> op1;
myStack.push(op1);
i = j;
i++;
}
else if(ins[i] == '+'){
op2 = myStack.top();
myStack.pop();
op1 = myStack.top();
myStack.pop();
myStack.push(op1+op2);
i+=2;
}
else if(ins[i] == '-'){
op2 = myStack.top();
myStack.pop();
op1 = myStack.top();
myStack.pop();
myStack.push(op1-op2);
i+=2;
}
else if(ins[i] == '*'){
op2 = myStack.top();
myStack.pop();
op1 = myStack.top();
myStack.pop();
myStack.push(op1*op2);
i+=2;
}
else if(ins[i] == '/'){
op2 = myStack.top();
myStack.pop();
op1 = myStack.top();
myStack.pop();
myStack.push(op1/op2);
i+=2;
}
else if(ins[i] == '%'){
op2 = myStack.top();
myStack.pop();
op1 = myStack.top();
myStack.pop();
myStack.push(op1%op2);
i+=2;
}
}
cout<<myStack.top()<<endl;
}
return 0;
供參考~如果這題有「負數」的話就更麻煩了@@