int?在(字符串?c){?如果(c?==?"+"?||?c?==?"-"?||?c?==?"*"?||?c?==?"/"?||?c?==?"("?||?c?==?")"||?c?==?" # ")返回?1;?elsereturn?0;}
字符串?procede(字符串?op1,字符串?op2){?if(op1?==?"+"?& amp& amp?(op2?==?“*”| | op2?=="/"||op2?== "(")回車?" & lt";?if(op1?==?"+"?& amp& amp?(op2?==?"+"||op2?=="-"||op2?==")"||op2?=="# ")返回?" >;?if(op1?==?"-"?& amp& amp?(op2?==?“*”| | op2?=="/"||op2?== "(")回車?" & lt";?if(op1?==?"-"?& amp& amp?(op2?==?"+"||op2?=="-"||op2?==")"||op2?=="# ")返回?" >;?if(op1?==?"*"?& amp& amp?op2?== "(")返回?" & lt";?if(op1?==?"*"?& amp& amp?(op2?==?"+"||op2?=="-"||op2?=="*"||op2?=="/"||op2?==")"||op2?=="# ")返回?" >;?if(op1?==?"/"?& amp& amp?op2?== "(")返回?" & lt";?if(op1?==?"/"?& amp& amp?(op2?==?"+"||op2?=="-"||op2?=="*"||op2?=="/"||op2?==")"||op2?=="# ")返回?" >;?if(op1?==?"("?& amp& amp?op2?== ")回報?"=";?if(op1?==?"("?& amp& amp?(op2?=="+"||op2?=="-"||op2?=="*"||op2?=="/"||op2?== "(")回車?" & lt";?if(op1?==?")"?& amp& amp?(op2?=="+"||op2?=="-"||op2?=="*"||op2?=="/"||op2?==")"||op2?=="# ")返回?" >;?if(op1?==?"#"?& amp& amp?(op2?=="+"||op2?=="-"||op2?=="*"||op2?=="/"||op2?=="("||op2?=="# ")返回?" & lt";}
浮動?操作(浮動?壹、弦?op,float?b){?如果(op?==?"+")返回?a+b;?如果(op?==?“-”)返回?a-b;?如果(op?==?“*”)返回?a * b;?如果(op?==?“/”回車?a/b;}
int?evaluateExpression(){?浮動?num1,num2?堆棧& ltfloat & gt?OPND//存儲操作數?堆棧& lt字符串& gt?OPTR?//商店經營者?opnd . empty();?optr . empty();?optr . push(" # ");?std::string?c;?CIN & gt;& gtc;?而(c?!=?"#"?||?OPTR.top()?!=?"#")?{如果(!In(c))//不是堆棧上的運算符{?opnd . push(strington um(c));?CIN & gt;& gtc;}else{?//cout & lt;& ltprocede(OPTR.top(),c)& lt;& ltendl?if(procede(OPTR.top(),c)?==?" & lt")?{ optr . push(c);CIN & gt;& gtc;?}?不然呢?if(procede(OPTR.top(),c)?==?"=")?{ optr . pop();CIN & gt;& gtc;?}別的?if(procede(OPTR.top(),c)?==?" >)?{字符串?op?=?optr . top();optr . pop();?num1?=?opnd . top();opnd . pop();?num2?=?opnd . top();opnd . pop();
OPND.push(operate(num2,op,num 1));?}}?}?如果(!OPND.empty())?回歸?opnd . top();?不然呢?回歸?0;}
int?main(){?而(1)?{ cout & lt& ltevaluate expression()& lt;& ltendl?}系統(“暫停”);回歸?0;}