描述
输入一个表达式(用字符串表示),求这个表达式的值。
保证字符串中的有效字符包括[‘0’-‘9’],‘+’,‘-’, ‘*’,‘/’ ,‘(’, ‘)’,‘[’, ‘]’,‘{’ ,‘}’。且表达式一定合法。
数据范围:表达式计算结果和过程中满足 ∣val∣≤1000 ,字符串长度满足 1≤n≤1000
输入描述:
输入一个算术表达式
输出描述:
得到计算结果
示例1
输入:
3+2*{1+2*[-4/(8-6)+7]}
输出:
25
#include<cstdio>
#include<stack>
#include<string>
#include<map>
using namespace std;
stack<double> num_stack;
stack<char> op_stack;
map<char,int> prio={
{'$',0},
{'+',2},{'-',2},
{'*',3},{'/',3},
};
double cal(double left,double right,char op)
{
double res;
switch (op) {
case '+': res=left + right; break;
case '-': res=left - right; break;
case '*': res=left * right;