NOTE: No late assignments will be accepted beyond Sunday, April 25th so that the solutions can be posted Monday morning to study before the Midterm on Tuesday, April 27th.
The purpose of this assignment is to implement a template class called Stack which uses a statically sized array to store the stack and implement a postfix expression evaluator with the stack.
This assignment will create a template class called Stack which supports two
exception classes called EmptyStack
and FullStack
.
The stack class will use a statically sized array of 100 elements to store
the data. It will also need to track the current top of the stack.
Stack will have the following public interface:
expression expression operatorwhere expression can be either a numerical literal or another postfix expression. For example, the postfix expression 3 4 + is equal to 3 + 4 and the postfix expression 3 5 + 6 * is equal to (3 + 5) * 6.
Postfix expressions are evaluated by starting at the leftmost variable and working your way to the right. The stack stores the numbers in the expression (you can choose either integers or doubles for your numbers).
The logic for the evaluation is as follows:
while there are still variables from the expression to parse if the current variable is a number push the number onto the stack if the current variable is an operator pop the top two values off the stack if either pop throws an EmptyStack expression print "The postfix expression is invalid" return perform the given operation with the two values push the result of the operation on the stack retrieve the next variable in the expression end-while if the stack not empty pop the value off the stack if the stack is now empty print the value as the result of the expression else print "The postfix expression is invalid" else print "The postfix expression is invalid"For example, the expression 3 5 + 6 * would put 3 on the stack, then 5 on the stack and then see the + operator. It would then pop 3 and 5 off the stack, add them together and put 8 on the stack. Then it would put the 6 on the stack and then see the * operator. It would then pop 8 and 6 off the stack, multiply them together and put 48 on the stack. It would then exit the while loop and pop the result 48 off the stack.
Your main program should have a do-while loop which asks for a postfix expression, performs the above evalutation and then prompts the user if they wish to enter another expression. This input loop will continue while the user indicates they wish to enter another expression.
Email your completed source code to me.