描述
输入一个表达式(用字符串表示),求这个表达式的值。
保证字符串中的有效字符包括[‘0’-‘9’],‘+’,‘-’, ‘*’,‘/’ ,‘(’, ‘)’,‘[’, ‘]’,‘{’ ,‘}’。且表达式一定合法。
数据范围:表达式计算结果和过程中满足 abs(val)<=1000,字符串长度满足 1<=n<=1000
输入描述:
输入一个算术表达式
输出描述:
得到计算结果
示例1
输入:
3+2*{1+2*[-4/(8-6)+7]}
输出:
25
居然是道简单题
ε=(´ο`*)))
#include#include #include using namespace std; string sheet="+-*/)]}([{";//形成数字时依赖字典 bool Com(char c1,char c2){ if(c1=='(') return false; else if((c1=='+' || c1=='-') && (c2=='*' || c2=='/')) return false; return true; } void Cal(stack & numbers,stack & signs){ double b=numbers.top(); numbers.pop();//注意a、b计算顺序 double a=numbers.top(); numbers.pop(); char sign=signs.top(); signs.pop(); if(sign=='+') a+=b; else if(sign=='-') a-=b; else if(sign=='*') a*=b; else if(sign=='/') a/=b; numbers.push(a); return; } int main(){ string str; while(getline(cin, str)){ stack numbers; stack signs; str+=')'; signs.push('('); bool flag=false; for(int i=0;i 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)