博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NYOJ 35
阅读量:6251 次
发布时间:2019-06-22

本文共 1760 字,大约阅读时间需要 5 分钟。

 

表达式求值

时间限制:
3000 ms  |  内存限制:
65535 KB
难度:
4
 
描述
ACM队的mdd想做一个计算器,但是,他要做的不仅仅是一计算一个A+B的计算器,他想实现随便输入一个表达式都能求出它的值的计算器,现在请你帮助他来实现这个计算器吧。
比如输入:“1+2/4=”,程序就输出1.50(结果保留两位小数)
 
输入
第一行输入一个整数n,共有n组测试数据(n<10)。
每组测试数据只有一行,是一个长度不超过1000的字符串,表示这个运算式,每个运算式都是以“=”结束。这个表达式里只包含+-*/与小括号这几种符号。其中小括号可以嵌套使用。数据保证输入的操作数中不会出现负数。
数据保证除数不会为0
输出
每组都输出该组运算式的运算结果,输出结果保留两位小数。
样例输入
21.000+2/4=((1+2)*5+1)/4=
样例输出
1.504.00
#include
#include
//sscanf#include
#include
#include
using namespace std;char ch[7][7]={ {'>','>','<','<','<','>','>'}, {'>','>','<','<','<','>','>'}, {'>','>','>','>','<','>','>'}, {'>','>','>','>','<','>','>'}, {'<','<','<','<','<','=',' '}, {' ',' ',' ',' ',' ',' ',' '}, {'<','<','<','<','<',' ','='},};int sign(char ch){ switch(ch) { case '+' : return 0; case '-' : return 1; case '*' : return 2; case '/' : return 3; case '(' : return 4; case ')' : return 5; case '=' : return 6; //default : exit(-1); }}char pri(char a, char b){ return ch[sign(a)][sign(b)];}double calc(double a, char oper, double b){ switch(oper) { case '+' : return a + b; case '-' : return a - b; case '*' : return a * b; case '/' : return a / b; //default : exit(-1); }}int main(){ int i,j,k,T; cin>>T; while(T--) { string str; str.clear(); stack
num; stack
oper; cin>>str; oper.push('='); int d = 0; double temp; for(i=0;i
' : //操作符栈里不存在括号 ope = oper.top(); oper.pop(); b = num.top(); num.pop();//注意a,b的顺序 a = num.top(); num.pop(); num.push(calc(a, ope, b)); i--;break;//别忘了i-- default : break; } } } printf("%.2lf\n", num.top()); while(!num.empty()) num.pop(); while(!oper.empty()) oper.pop(); } return 0;}

 

转载地址:http://fqusa.baihongyu.com/

你可能感兴趣的文章
IEEE754标准的浮点数存储格式
查看>>
Babel插件开发入门指南
查看>>
浅谈iOS 自动调节文本高度
查看>>
oracle易忘函数用法(2)
查看>>
总结系列_14(OpenCV2.4.3的新特征以及安装方法)
查看>>
虚拟地址空间分配
查看>>
提高你的Java代码质量吧:使用构造函数协助描述枚举项
查看>>
Struts2 学习笔记20 类型转换part2 写自己的转换器
查看>>
mybatis+spring配置
查看>>
Windows下将程序打包为安装包(最为简易的方式)
查看>>
这个月干啥去了?——H5+移动应用实战开发
查看>>
GMT时间转换为当地时间的方法
查看>>
Netstat命令详解
查看>>
软件测试面试题整理
查看>>
Jmeter-Maven-Plugin高级应用:Proxy Configuration
查看>>
OPPO 立足国内放眼世界 寻求新的增长引擎
查看>>
小米武汉总部开工雷军亲自出席:远期在汉要招上万人
查看>>
传贾跃亭将FF股份交给友人代持以规避失信人限制
查看>>
豆盟递交招股书:单季利润1394万 蓝标为第二大股东
查看>>
申小雨命案审理延期至3月5日 警方将翻译嫌犯口供
查看>>