Lo que planteas a solucionar es El <strong>algoritmo shunting yard</strong> y es un
método para analizar (<a class="mw-redirect" title="Parser"
href="http://es.wikipedia.org/wiki/Parser">parsing</a>) las ecuaciones
matemáticas especificadas en la <a title="Notación de infijo"
href="http://es.wikipedia.org/wiki/Notaci%C3%B3n_de_infijo">notación de
infijo</a>. Puede ser utilizado para producir la salida en la <a title="Notación polaca
inversa"
href="http://es.wikipedia.org/wiki/Notaci%C3%B3n_polaca_inversa">notación polaca
inversa</a> (RPN) o como <a title="Árbol de sintaxis abstracta"
href="http://es.wikipedia.org/wiki/%C3%81rbol_de_sintaxis_abstracta">árbol de
sintaxis abstracta</a> (AST). El <a title="Algoritmo"
href="http://es.wikipedia.org/wiki/Algoritmo">algoritmo</a> fue inventado por <a
title="Edsger Dijkstra" href="http://es.wikipedia.org/wiki/Edsger_Dijkstra">Edsger
Dijkstra</a> y nombró como algoritmo "shunting yard" (patio de
clasificación) porque su operación se asemeja al de un <a title="Playa de
maniobras" href="http://es.wikipedia.org/wiki/Playa_de_maniobras">patio de
clasificación</a> del ferrocarril. <br />por <strong>algoritmo shunting yard
</strong>lo puedes buscar<strong> </strong>la verdad que yo hice algo particularizado
que te lo voy a poner<br />saludos de Lester:<br /><br />#include<iostream>
<br />#include <stack>
<br />#include <queue>
<br />#include <conio>
<br /> <br />using namespace std;
<br />int main(void){
<br /> cout<<"Algoritm shunting yard Particularized,Transform the
algebraic expression \ninto RPN form (Reverse Polish Notation). Two-argument operators:
+, -, *, /, ^ \n(priority from the lowest to the highest),and brackets ().\n";
<br /> cout<<"Execute with _\nFinish with 0\n";
<br /> char a;
<br /> stack< char > StackOP;
<br /> queue< char > StackSal;
<br /> 
<br />comienza:  while(cin>>a){
<br />      if(a=='0')goto end;
<br />      if(a=='_')break;
<br />      if(a=='+'||a=='-'||a=='\\'||a=='*'||a=='^'){
<br />       while(1){
<br />           
if(StackOP.empty()){StackOP.push(a);break;}
<br />           
if((a=='*'||a=='\\')&&(StackOP.top()=='+'||StackOP.top()=='-')){
<br
/>                
StackOP.push(a);
<br
/>                
break;
<br />             }
<br />             else
if((a=='-'||a=='+')&&(StackOP.top()=='*'||StackOP.top()=='\\'||StackOP.top()=='^')){
<br
/>                
StackSal.push(StackOP.top());
<br
/>                
StackOP.pop();
<br />             }
<br />             else
if((a=='*'||a=='\\')&&(StackOP.top() == '^')){
<br />             
StackSal.push(StackOP.top());
<br />             
StackOP.pop();
<br />             }
<br />             else
if(a=='^'){
<br />             
StackOP.push(a);
<br />              break;
<br />             }
<br />             else
if(StackOP.top()=='('){
<br />            
StackOP.push(a);
<br />             break;
<br />             }
<br />             else
if((a=='+'||a=='-')&&(StackOP.top()=='+'||StackOP.top()=='-')||(a=='\\'||a=='*')&&(StackOP.top()=='*'||StackOP.top()=='\\')){
<br
/>                
StackSal.push(StackOP.top());
<br
/>                
StackOP.pop();
<br />             }
<br />       }
<br /> <br />    }
<br />    else if(a=='('){
<br />    StackOP.push(a);
<br />    }
<br />    else if(a==')'){
<br />      while(StackOP.top()!='('){
<br />      StackSal.push(StackOP.top());
<br />      StackOP.pop();
<br />      }
<br />     StackOP.pop();
<br />    }
<br />    else{StackSal.push(a);}
<br /> <br /> }
<br /> <br />while ( !StackOP.empty() ){
<br />         // view (and display) top element
<br />        StackSal.push(StackOP.top());
<br />        StackOP.pop(); // remove top element
<br /> } //
<br /> <br /> while ( !StackSal.empty() ){
<br />        cout << StackSal.front(); // view
(and display) top element
<br />        StackSal.pop(); // remove top element
<br /> } // end   */
<br /> cout<<endl;
<br /> goto comienza;
<br /> <br />end:system("pause");
<br /> return 0;
<br /> <br />}<br />esto te puede ayudar porque transforma expresiones con
parentesis y acepta operadores como suma resta cociente multiplicacion, parentesis etx
despues lo revisas.<br /><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<p></p>
<hr>
<p>Convencion Internacional de Psicologia y Ciencias Sociales y Humanas</p>
<p>Cienfuegos, Cuba, del 19 al 22 de abril del 2011</p>
<p>http://promociondeeventos.sld.cu/hominis2011</p>
</body>
</html>