The operators that may appear in expressions include the binary
(two-operand) + and -, with the usual interpretation. Thus the
expression a + c - d + b
has the value 2 (computed as 1 +
3 - 4 + 2
). The only other operators that may appear in expressions
are ++
and --
. These are unary (one-operand) operators, and may
appear before or after any variable. When the ++
operator appears
before a variable, that variable's value is incremented (by one)
before the variable's value is used in determining the value of the
entire expression. Thus the value of the expression ++ c - b
is
2, with c being incremented to 4 prior to evaluation the entire
expression. When the ++
operator appears after a variable, that
variable is incremented (again, by one) after its value is used to
determine the value of the entire expression. Thus the value of the
expression c ++ - b
is 1, but c is incremented after the
complete expression is evaluated; its value will still be 4. The --
operator can also be used before or after a variable to decrement
(by one) the variable; its placement before or after the variable has
the same significance as for the ++
operator. Thus the value of the
expression --
c + b -- has the value 4, with variables b and
c having the values 1 and 2 following the evaluation of the
expression.
Here's another, more algorithmic, approach to explaining the ++
and --
operators. We'll consider only the ++
operator, for
brevity:
++ a + b ++
is
equivalent to computing
a = a + 1
(from step 1 of the algorithm)
expression = a + b
(from step 3)
b = b + 1
(from step 2)
where expression would receive the value of the complete
expression.
Your program is to read expressions, one per line, until a totally blank (or empty) line is read. Display each expression exactly as it was read, then display the value of the entire expression, and on separate lines, the value of each variable after the expression was evaluated. Do not display the value of variables that were not used in the expression. The samples shown below illustrate the desired output format.
Blanks are to be ignored in evaluating expressions, and you are
assured that ambiguous expressions like a+++b
(ambiguous
because it could be treated as a++ + b or a + ++b
) will not
appear in the input. Likewise, ++
or --
operators will never
appear both before and after a single variable. Thus expressions
like ++a++
will not be in the input data.
Try the Java solution:
Sample Input
a + b b - z a+b--+c++ c+f--+--a f-- + c-- + d-++e
Expression: a + b value = 3 a = 1 b = 2 Expression: b - z value = -24 b = 2 z = 26 Expression: a+b--+c++ value = 6 a = 1 b = 1 c = 4 Expression: c+f--+--a value = 9 a = 0 c = 3 f = 5 Expression: f-- + c-- + d-++e value = 7 c = 2 d = 4 e = 6 f = 5
a z a+z a - z a++ ++a f -- g -- + f++ ++e + f + g-- + b++ - d -- c + b ++ - ++f - ++ d - a++
Expression: a value = 1 a = 1 Expression: z value = 26 z = 26 Expression: a+z value = 27 a = 1 z = 26 Expression: a - z value = -25 a = 1 z = 26 Expression: a++ value = 1 a = 2 Expression: ++a value = 2 a = 2 Expression: f -- value = 6 f = 5 Expression: g -- + f++ value = 13 f = 7 g = 6 Expression: ++e + f + g-- + b++ - d value = 17 b = 3 d = 4 e = 6 f = 6 g = 6 Expression: -- c + b ++ - ++f - ++ d - a++ value = -9 a = 2 b = 3 c = 2 d = 5 f = 7