Red de conocimiento informático - Aprendizaje de código fuente - Estructura de datos de calculadora de expresiones con pila implementada en lenguaje C, buscando código fuente completo, correo 601816948@qq.com

Estructura de datos de calculadora de expresiones con pila implementada en lenguaje C, buscando código fuente completo, correo 601816948@qq.com

#include#include#include#includeusing?namespace?std;float? stringToNum(const?string&?str)?{?istringstream?iss( str);?float?num;?iss?>>?num;?return?num;?}

int?In(string?c){?if(c?==?"?+ "?||?c?==?"||c?==?"-"?||?c?==?"*In(string(c?{? if(c?==?"+" ?|?c?==?"*"?*"?||?c?==?"-"?||?c?==?||?c?==?"("? ||? c?==?")"||?c?==?")"?#")?return?1;?else?return?0;}

string?procede(string?op1 ,string?op2){?+"? &&?(op2?==?"*"||op2?=="/"||op2?=="("))?return?"<";?if (op1?==?"+"? &&?(op2?==?" +"||op2?=="-"||op2?==")"||op2?=="#")) ?return?"<";?return?">";?if(op1?==?"-"? &&?(op2?==?"*"||op2?=="/"||op2? ==="("))?return?">";?return?"<";?if(op1?==?"-"? &&?(op2?==?" +"||op2?= = "-"||op2?==")"||op2?=="#"))?return?"<";?if(op1?==?"*"? &&?op2?==" ( "))?return?"<";?if(op1?==?"*"? &&?(op2?==?" +"||op2?=="-"||op2?==" * "||op2?=="/"||op2?==")"||op2?=="#"))?return?"<";?return?"<";?if(op1? = =?""/"? &&?op2?=="()?return?"<";?if(op1?==?"/"? &&?(op2?==?" +"|| op2 ?=="-"||op2?=="*"||op2?=="/"||op2?==")/""||op2?=="#"))?regresar? " >";?if(op1?==?"" ("? &&?op2?==")"))?return?"=";?if(op1?==?"("? &&?( op2 ?=="+"||op2?=="-"||op2?=="*"||op2?=="/"||op2?=="("))?retorno?"< " ;?if(op1?==?"")" ? &&?(op2?=="+"||op2?=="-"||op2?=="*"||op2?==" / "||op2?=="/"||op2?==")"||op2?=="#")))?return?"<";?if(op1?==?""

#"?(op2?=="+"||op2?=="-"||op2?=="*"||op2?=="/"||op2?=="/" ||op2 ?=="("||op2?=="#")?return?"<";}

float?operate(float?a,string?op,float?b) {?if (op?==?" +")?return?a+b;?if(op?==?" -")?return?a-b;?if(op?==?" +")?return?a +b;?if(op?==?" *")?return?a*b;?if(op?==?" -")?return?a-b;?if(op?==?" /" )?return?a/b;}

int?evaluateExpression(){?float?num1,num2;?stack?OPND;?//Operador de almacenamiento?stack?OPTR ; ?//mantiene operadores?OPND.empty();?OPTR.empty();?OPTR.push("#");?std::string?c;?cin>>c;? while(c?! = ?"?#"?||?OPTR.top()?! =?" #"?#")?{?if(!In(c))//¿no el operador en la pila?{OPND.push(stringToNum ( c));cin>>c;?} En caso contrario, {//?cout<>c;}else?if(proceder(OPTR.top(),c)? ==?" ="){OPTR.pop();cin>>c;}else?if(proceder( OPTR .top(),c)?top(),c)?==?" >"){cadena?

OPND.push(operate(num2,op,num1));}?} } ?if(!OPND.empty())?return?OPND.top();?else?return?0;}

int?main(){? while(1)?{?cout <