//#include<stack>
#include<iostream>
#include<string>
//#include<cctype>
//#include<cassert>
using namespace std;
#define SIZE 100
template<typename T>
class Stack{
public:
Stack():tos(0){}
bool empty()const{return tos==0;}
void push(const T&);
void pop();
T& top();
const T& top()const;
private:
T s[SIZE];
int tos;};
template<typename T>
void Stack<T>::push(const T&a){
s[tos++]=a;}
template<typename T>
void Stack<T>::pop(){
tos--;
}
template<typename T>
T &Stack<T>::top(){
return s[tos-1];
}
template<typename T>
const T& Stack<T>::top()const{
return s[tos-1];
}
int jisuan(string exp);
int main(){
string shuru;
int a;
while(1){
getline(cin,shuru);
a=jisuan(shuru);
cout<<a<<endl;
}}
int jisuan(string exp){
Stack<int>operStack;
char token,topToken;
int a,b,c;
for(int i=0;i<exp.length();i++){
token=exp[i];
if(token>='0'&&token<='9') {
a=token-48;
operStack.push(a);}
else {
switch(token){
case' ':break;
case'+':b=operStack.top();
operStack.pop();
c=operStack.top();
operStack.pop();
operStack.push(c+b);
break;
case'-':b=operStack.top();
operStack.pop();
c=operStack.top();
operStack.pop();
operStack.push(c-b);
break;
case'*':b=operStack.top();
operStack.pop();
c=operStack.top();
operStack.pop();
operStack.push(c*b);
break;
case'/':b=operStack.top();
operStack.pop();
c=operStack.top();
operStack.pop();
operStack.push(c/b);
break;
default:break;}
}
}
topToken=operStack.top();
return topToken; }
Sufijo de cálculo - C++
Supongo que te gusta
Origin blog.csdn.net/cangzhexingxing/article/details/124725391
Recomendado
Clasificación