Red de conocimiento informático - Aprendizaje de código fuente - Código fuente del protocolo de datos c

Código fuente del protocolo de datos c

# incluir ltiostream gt# incluir ltsstream gt# incluir lt stack gt# incluir lt string gt use? ¿Espacio de nombres? flotador estándar? Stringham (const? cadena y cadena.

? str){istringstream? ISS(cadena); flotar? numis? gt gt? ¿núm devuelve? número}

int? en(cadena?c){? if(c?==?" "?||?c?==?"-"?||?c?==?"*"?||?c?==?"/"?||?c ? ==?"("?||?c?==?")"||?c? ==?" # ")regresar? 1;? ¿más regresar? 0;}

¿Cadena? proceder(Cadena?op1,Cadena?op2){? if(op1?==?" "? amp amp?(op2?==?"*"| | op2?=="/"||op2?== "(")Enter?" lt";?if ( op1?==?" "? amp amp?(op2?==?" "||op2?=="-"||op2?==")"||op2?=="# ")¿Regresar? >;?if(op1?==?"-"? amp amp?(op2?==?"*"| | op2?=="/"||op2?== "(")Enter?" lt" ;?if(op1?==?"-"? amp amp?(op2?==?" "||op2?=="-"||op2?==")"||op2?== "# ")¿regresar? " >;?if(op1?==?"*"? amp amp?op2?== "(")return?" ?if(op1?==?"*"? amp amp? (op2 ?==?" "||op2?=="-"||op2?=="*"||op2?=="/"||op2?==")"||op2 ? == "# ")¿regresar? ">;?if(op1?==?"/"? amp amp?op2?== "(")return?" ?if(op1?==?" /"? amp amp?(op2 ?==?" "||op2?=="-"||op2?=="*"||op2?=="/"||op2?==")" ||op2? ")¿regresar? " >;?if(op1?==?"("? amp?op2?== ")regresar?"=";?if(op1?==? "("? amp amp?(op2 ?==" "||op2?=="-"||op2?=="*"||op2?=="/"||op2?== "(" )Ingresar "lt"? op1?==?")"? amplificador? (op2?==" "||op2?=="*"|| op2? == "/"||op2? =="||op2? == " " >? =" "||op2? ==="*"||op2? ==="("||op2?=="# ")? "lt";}

Flotar ? operación (flotante? uno, cadena? op, flotante? b) {? si (op? ? "") retorno si (op? ==?"-")return?a-b;?if(op?==? "*")¿devolver? a*b;? if(op?==?"/"Enter?a/b;}

int?evaluateExpression(){?float?num1,num2?stackltfloatgt?OPND//Operando de almacenamiento?stack lt string gt? // operador de tienda? opnd .vacío(); optr .

std::cadena? do;? CIN gt;gtc;? Y (c?!=?"#"?||?OPTR.top()?!=?"#")?{if (!In(c))//no es un operador en la pila{? opnd .empujar(strington um(c));? CIN gt; gtc;}else{? //cout lt; ltprocede(OPTR.top(), c) lt; if(proceder(OPTR.top(),c)?==?"lt")?{optr.push(c);CIN gt;gtc;? }?¿De lo contrario? if(proceder(OPTR.top(),c)?==?"=")?{ optr . }¿Otra cosa? if(procede(OPTR.top(),c)?==?" >)?{String?op?=?optr.top();optr.pop();?num1?=?opnd.top() ; opnd.pop();?num2?=?opndtop();opndpop();?opnd.push(operar(num2,op,num1));? opnd.top();?return?}

main(){? lt ltevaluate expresión() lt;