You are on page 1of 5

EJERCICIOS

Miguel Martínez
ITESI Tarimoro
Notación polaca

A+B*C = ABC+*

A *

B C

4+5/3 =453/+

4 /

5 3

X-Y+Z*C =XYZC*+-

- *

X Y Z C

5*4+6/2

*/

54 62
Triplos:
X[1]:=Y

Oper Op1 Op2


+Unario y
:= X 1

X:Y[1]

Oper Op1 Op2


+Unario y 1
:= X

B=C+D*E

Oper Op1 Op2


+ c d
* d e
= b

A=2+5/8

Oper Op1 Op2


+ 2 5
/ 5 8
= A
Cuádruplos

A=B*-C+B*-C

Oper Op1 Op2 Res


* b -c
+ -c b
* b -c a

B=C+D*E

Oper Op1 Op2 Res


+ C D
* D E B

D=A+B*C

Oper Op1 Op2 Res


+ A B
* B C D
Ejemplos:

if
if ((posfija[i]=='*')|| (posfija[i] == '+') || (posfija[i] == '-') || (posfija[i] ==
' '))
{
int resz = DimeOperador(pilaResultado.Pop(),
pilaResultado.Pop(), posfija[i]);
pilaResultado.Push(resz);
}
else if ((posfija[i] >= '0')||(posfija[i] <= '9'))
{
pilaResultado.Push((int)(posfija[i] - '0'));
}

switch

switch (p_3)
{
case '+':
return p_2 + p;
case '-':
return p_2 - p;
case '*':
return p_2 * p;
case '/':
return p_2 / p;
default:
return -1;
}

while

while ((pila.Count > 0) && (pila.Peek() != '('))


{
if (precedenciadeoperadores(pila.Peek(), stringeninfijo[i]))
{
stringenpostfijo.Append(pila.Pop());
}
else
{
break;
}
pila.Push(stringeninfijo[i]);
}

You might also like