这题难度简单??? 我靠,我真是怀疑人生了。

#include #include #include #include #include using namespace std; int pos=0; double calculate(string s){ int len = s.length(); char flag='+'; stackst; double num=0;

while(pos<len){
    num=0;
    if(s[pos]=='('||s[pos]=='['||s[pos]=='{')
    {pos++;
        num=calculate(s);
     }
while(pos<len&&isdigit(s[pos]))
{
    num=num*10+s[pos]-'0';
    pos++;
}
switch(flag){
    case '+':
        {st.push(num);break;}
    case '-':
        {st.push(-1*num);break;}
    case '*':
        {num=(st.top())*num;
        st.pop();
        st.push(num);break;
        }
    case '/':
        {
            num=(st.top())/num;
            st.pop();
            st.push(num);
            break;
             
        }
};
   if(s[pos]==')'||s[pos]==']'||s[pos]=='}')
   {pos++; break;}
    flag=s[pos];
    pos++;
} 
double res=0;
while(!st.empty()){
    res+=st.top();
    st.pop();
}
 
         
 return res;      
}
 
 

int main() { string s; cin>>s; cout<<calculate(s); /*ctor c ; for(char cc:s){ c.push_back(cc); } vector::iterator it=c.begin(); while(it!=c.end()) { it=find(c.begin(),c.end(),'('); */ return 0;

}