Add(c, double.Parse(Console.ReadLine()));
}
}
Expression left = new VariableExpression(vars[0]);
Expression right = null;
Stack<Expression> stack = new Stack<Expression>();
stack.Push(left);
for (int i = 1; i < vars.Length; i += 2)
{
left = stack.Pop();
right = new VariableExpression(vars[i + 1]);
switch (vars[i])
{
case '+':
stack.Push(new AddExpression(left, right));
break;
case '-':
stack.Push(new SubExpression(left, right));
break;
case '*':
stack.Push(new MulExpression(left, right));
break;
case '/':
stack.Push(new DivExpression(left, right));
break;
}
}
double value = stack.Pop().Interpret(this.context);
stack.Clear();
return value;
}
}
输入公式:a+b-c+a
赋值:
a=10 b=5 c=3
运算结果:22
|