Portal de título original
Idea: Defina una pila para almacenar el tipo int, y luego convierta los datos de entrada y guárdelos en la pila, pero divídalos por símbolos aritméticos, avance el primer número, luego ingrese el segundo número y luego arroje el último número primero en esta vez, el número avanzado es el elemento superior de la pila. Luego, después de realizar operaciones en estos dos números, el primer número se descarta y la suma del resultado de la operación se empuja a la pila, que se puede repetir.
Referencia de código
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1001;
char a[MAXN];
int sum,k;
stack <int> stk;
int main(){
gets(a);
for(int i=0;a[i]!='@';i++)
{
if(a[i]=='.')
{
sum=0,k=1;
//将数据转换后存入栈中
for(int j=i-1;j>=0&&a[j]>='0'&&a[j]<='9';j--){
sum=sum+(a[j]-'0')*k;
k*=10;
}
stk.push(sum);
continue;
}
if(a[i]>='0' && a[i]<='9')
continue;
sum=stk.top();//栈顶元素
stk.pop();//弹出栈顶元素
if(a[i]=='+') sum=stk.top()+sum;
if(a[i]=='-') sum=stk.top()-sum;
if(a[i]=='*') sum=stk.top()*sum;
if(a[i]=='/') sum=stk.top()/sum;
stk.pop();
stk.push(sum);//将sum压入栈中
}
cout<<sum<<endl;
return 0;
}