IITKESO207A_2P_1 - Calculator

no tags 

The input is an arithmetic expression in infix notation, for example, 24 ∗ (3 + 5)/7%3. The problem is to write a program that reads the expression given over multiple lines, parses it, evaluates it and gives the output value as a floating point integer or prints the string “Malformed expression” if the input is malformed. The numbers in the expression are integers but the ouput can be floating point. The operators come from the set {+, −, ∗, /, %,(,)}. The operators act as per their usual definitions. We assume the usual precedence among operators, that is, from lowest to highest, {+, −}, then, *, followed by {/, %} and parenthesis, where, + and binary − are at the same level of precedence and have left to right associativity, so do {/, %}.

Note

The three problems given in the assignments have been merged. 75% of the test cases will check if your code works for problem 1 and 2 and 25% of the test cases will check for problem 3.

Input

The first line contains 'n' , the number of tokens in the expression. 'n' lines follow each containing a either a number or an operator . 

Output

This should be a single number. Errors less than 10^-2 will be ignored. 

Constraints

1<= n <= 20

Inputs will be between -1000 to 1000 

Example

INPUT 1:
4
4
-
-
3
OUTPUT 1:
7
INPUT 2:
7
3
/
(
2
+
1
)
OUTPUT 2:
1
INPUT 3:
3
1
+
(
OUTPUT 3:
Malformed expression


Added by:Programming Club, IITK
Date:2017-09-07
Time limit:1s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All