GeeCON Prague 2014*
The moose likes Beginning Java and the fly likes How to evaluate this postfix evaluation? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


JavaRanch » Java Forums » Java » Beginning Java
Bookmark "How to evaluate this postfix evaluation?" Watch "How to evaluate this postfix evaluation?" New topic
Author

How to evaluate this postfix evaluation?

Nadine Ernest
Greenhorn

Joined: Dec 10, 2008
Posts: 27


ive tried using the stack in evaluating this but it didnt work with this expression coz of the last - *


check it out:






the answer is 6!!


i just dont know how!!
please help make this simple to me....!!

thanks in advance


What Doesn't Kill You, Makes You Stronger!
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 39044
    
  23
That is the sort of postfix expression where each character is a token in its own right. It is difficult to understand until you separate it to

2 3 4 5 + * 2 4 - *

Going from left to right it means
  • push 2
  • push 3
  • push 4
  • push 5
  • add (4 + 5 = 9) so the 4 and 5 come off the stack and 9 is pushed. Stack now 2 3 9
  • Multiply 3 * 9, taking 3 9 off the stack and pushing 27. Stack now 2 27
  • Push 2
  • push 4
  • subtract, taking 2 4 off the stack and pushing -2 back: stack = 2 27 -2
  • Multiply, taking 27 -2 off the stack and pushing -54


  • Stack is now 2 -54.

    In a minute or two I shall try it in Forth and show the Forth stack traces, so you can see it still produces -54
    Campbell Ritchie
    Sheriff

    Joined: Oct 13, 2005
    Posts: 39044
        
      23
    UoT Formal Methods and Programming Research Group
    Reversible Forth vsn 0.11 built on linux-pgix
    Wed Nov 5 11:50:21 GMT 2008
    ok
    2 3 4 5 .S stack=2 3 4 5
    ok....
    + .S stack=2 3 9
    ok...
    * .S stack=2 27
    ok..
    2 4 .S stack=2 27 2 4
    ok....
    - .S stack=2 27 -2
    ok...
    * .S stack=2 -54
    ok..
    Not 6. What did you expect?

    The dots... after ok show how many values there are on the stack, and .S prints the stack.

    Please check whether you have copied the expression exactly from its source. And please quote your source, if you have a link or reference.

    Another try:
    2 3 4 5 + * 2 4 - * .S stack=2 -54
    ok..
    Nadine Ernest
    Greenhorn

    Joined: Dec 10, 2008
    Posts: 27
    No actually the right answer is 6!!

    so heres how you're supposed to do it:

    you push the 2 3 4 5 into the stack so now the stack looks like this:

    5
    4
    3
    2

    and so you + the first two wich is 5+4 = 9. and now the stack looks like this

    9
    3
    2

    you do this 9*3 which is 27
    and now the stack looks like this:

    27
    2

    and now you add 24 and the stack will look like this:

    24
    27
    2

    and now you do the - operation
    which will be 27-24=3

    and now the stack looks like this

    3
    2

    and now you perform the * operation and so it will give you 3*2 which is the 6 and now the stack looks like this

    6


    tell me campbell ritchie...do you agree with me?!
     
    GeeCON Prague 2014
     
    subject: How to evaluate this postfix evaluation?