# Programming Assignment 6 Solution

\$30.00

Category:

## Description

This assignment makes use of the files contained in this zip file. .

This assignment is based on pages 325 – 334 and pages 345 – 354 of our textbook.

In the zip file there is a file `Expression.java` which contains outlines of two static methods, `Infix2Postfix()` and `EvaluatePostfix()`, which you are to complete. Below is a description of each of these two methods.

The static method `EvaluatePostfix()` takes one parameter, a `String`, and returns an `int`. The input string holds an arithmetic expression in postfix notation. The arithmetic expression is made up of integers and six operators, `+`, `-`, `*`, `/`, `%`, and `^` (integer addition, subtraction, multiplication, division, remainder, and exponentiation). You can assume that the postfix expression does not have any syntax errors in it, and you can assume that all of the tokens in the expression have whitespace around them (this makes it easy to use a `StringTokenizer` object to scan through the string). The `EvaluatePostfix()` method should make use of a `java.util.Stack<T>` object to evaluate the postfix expression and return the resulting integer value. Here is an outline of the algorithm to evaluate a postfix expression. Read the postfix expression string from left to right. While the string has more tokens, if the current token is a number, push the number on the stack. If the current token is an operator, pop two operands off the stack, apply the operator and push the result back on the stack. When there are no more tokens, return the top of the stack.

The static method `Infix2Postfix()` takes one parameter, a `String`, and returns another `String`. The input string holds an arithmetic expression in regular infix notation. The arithmetic expression is made up of integers, parentheses, and six operators, `+`, `-`, `*`, `/`, `%`, and `^`. You can assume that the infix expression does not have any syntax errors in it, and you can assume that all of the tokens in the expression have whitespace around them (this makes it easy to use a `StringTokenizer` object to scan through the string). The `Infix2Postfix()` method should make use of a `java.util.Stack<T>` object to convert the infix expression to a postfix expression and return a string that holds the postfix expression. (The postfix string should have whitespace around all of its tokens so that it will work as input to the `EvaluatePostfix()` method.) Here is an outline of the algorithm to convert an infix expression to a postfix expression. Let `infix` be the name for the infix string and let `postfix` be the name of the postfix string that is being created.

• Append a right parenthesis, “)”, to the end of `infix`

• Push a left parenthesis, “(“, onto the stack

• While `infix` has more tokens, do the following:

• If the current token is an integer, append it to `postfix`.

• If the current token is a left parenthesis, push it on the stack.

• If the current token is an operator:

• Pop operators (if there are any) off of the stack while they have equal or higher precedence than the current operator and append the popped operators to `postfix`.

• Push the current operator on the stack.

• If the current token is a right parenthesis:

• Pop operators off the stack (there must be at least one) and append them to `postfix` until a left parenthesis is found at the top of the stack.

• Pop the left parenthesis from the top of the stack.

In the zip file along with this file there are three test programs, `TestInfix2Postfix.java`, `TestEvaluatePostfix.java`, and `TestExpressions.java`, that test your implementations of the `Infix2Postfix()` and `EvaluatePostfix()` methods. First test your implementation of `Infix2Postfix()` using `TestInfix2Postfix.java`. When that runs without errors, test your `EvaluatePostfix()` using `TestEvaluatePostfix.java`. When that runs without errors, the program `TestExpressions.java` should also run without errors.

Turn in a zip file called `CS275Hw6Surname.zip` (where `Surname` is your last name) containing your version of `Expression.java`.

error: Content is protected !!