<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>
tengo dudas con una clase para convertir expresiones infijas en postfijas<BR>
segui paso a paso un algoritmo y falla en el parentesis derecho<BR>
<BR>
enum simbolo {operando, pIzq, pDer,<BR> SumResta, MultDiv, Pow};<BR>class polaca<BR> {<BR> private:<BR> String lexema;<BR> simbolo precedencia (char c)<BR> {<BR> simbolo aux;<BR> switch (c)<BR> {<BR> case '+':<BR> case '-': aux = SumResta; break;<BR> case '*':<BR> case '/': aux =MultDiv; break;<BR> case '^': aux = Pow; break;<BR> case '(': aux = pIzq; break;<BR> case ')': aux = pDer; break;<BR> default : aux = operando; break;<BR> }<BR> return aux;<BR> }<BR> stack <char> s;<BR> public:<BR> polaca (String s)<BR> {<BR> lexema = s;<BR> }<BR> String convertir ()<BR> {<BR> String salida = "";<BR> for (int i = 1; i <= lexema.Length(); i++)<BR> {<BR> char c = lexema[i];<BR> simbolo simb = precedencia(c);<BR> switch (simb)<BR> {<BR> case operando: salida = salida + c; break;<BR> case pIzq: s.push(c); break;<BR> case pDer: {<BR> while(!s.isempty() && s.top() != '(')<BR> salida = salida + s.pop();<BR> s.pop();<BR> }<BR> break;<BR> case SumResta:<BR> case MultDiv:<BR> case Pow: {<BR> while (s.isempty() == false && precedencia(s.top()) >= c)<BR> {<BR> salida = salida + s.pop();<BR> }<BR> s.push(c);<BR> }<BR> break;<BR> }<BR> }<BR>
while(s.isempty() == false)<BR> salida = salida + s.pop();<BR> return salida;<BR> }<BR>
};<BR>
podrian orientarme al menos? gracias...<BR>
la clase stack es un pila de listas enlazadas y el programa esta hecho en c++ builder 6<BR>
<BR><br /><hr />Express yourself instantly with MSN Messenger! <a href='http://clk.atdmt.com/AVE/go/onm00200471ave/direct/01/' target='_new'>MSN Messenger</a></body>
</html>