For this assignment, you will write a computer program to evaluate arithmetic expressions represented as text (a space-delimited infix expression). For example, the string 1 + 2 + (3 * 4) would evaluate to 15. Your program should:
- Read arithmetic expressions in infix format from input text file ( 10 points)
- Validate the infix expression (10 points)
- Using Stack as ADT convert the infix expression into a postfix expression. (30 points)
- Using Stack as ADT evaluate the postfix expression from step 3 (30 points)
- Display the data in the stack before and after each pop and push operation (20 points)
You must handle the unary negation operator. You may use built-in functions in C or Java to handle the power operator (e.g., 2^3 =8) The usual order of operations is in effect:
- Parentheses have higher precedence evaluated left-to-right
- The ^ operator has higher precedence than unary negation operator, and other binary operators (*, /, +, and -)
- The unary negation operator has higher precedence than the binary operators, and is evaluated right-to-left ( right-associative)
- The * and / have higher precedence than + and
- All binary operators are evaluated left-to-right (left-associative)
Your program must read n number of a space-delimited infix expression from an input text file and evaluate them, where each line represents an infix expression.
Examples:
Input:
( 25 + 30 ) * 2 ^ ( 2 + 1 )
30 / 2 + 5 * 2
-3 ^ 2 + 10
( 6 + ( 3 ) 1)
Output:
440
25
1
2
Reviews
There are no reviews yet.