郁闷的C小加(三)

时间限制:1000 ms  |  内存限制:65535 KB
难度:4
描述
聪明的你帮助C小加解决了中缀表达式到后缀表达式的转换(详情请参考“郁闷的C小加(一)”),C小加很高兴。但C小加是个爱思考的人,他又想通过这种方法计算一个表达式的值。即先把表达式转换为前缀和后缀表达式,再求值。这时又要考虑操作数是小数和多位数的情况。

输入
第一行输入一个整数T,共有T组测试数据(T<10)。
每组测试数据只有一行,是一个长度不超过1000的字符串,表示这个运算式,每个运算式都是以“=”结束。这个表达式里只包含+-*/与小括号这几种符号。其中小括号可以嵌套使用。数据保证输入的操作数中不会出现负数并且小于1000000。
数据保证除数不会为0。
输出
对于每组测试数据输出结果包括三行,先输出转换后的前缀和后缀表达式,再输出计算结果,结果保留两位小数。
样例输入
2
1+2=
(19+21)*3-4/5=
样例输出
+ 1 2 =
1 2 + =
3.00
- * + 19 21 3 / 4 5 =
19 21 + 3 * 4 5 / - =
119.20
AC码:

#include<stdio.h>
#include<string.h>
char pre[2500];  // 存储前缀
int k;
double eval()
{double x=0,t=0.1;while(pre[k]==' ')k--;if(pre[k]=='+'){k--;return eval()+eval();}if(pre[k]=='-'){k--;return eval()-eval();}if(pre[k]=='*'){k--;return eval()*eval();}if(pre[k]=='/'){k--;return eval()/eval();}while(pre[k]>='0'&&pre[k]<='9'){x=x*10+pre[k]-'0';k--;}if(pre[k]=='.'){k--;t=0.1;while(pre[k]>='0'&&pre[k]<='9'){x=x+(pre[k]-'0')*t;t=t*0.1;k--;}}return x;
}
int main()
{int T;int pr,po,cr,co,len,len2,i;char chr[1000];  // 存储前缀的运算符char cho[1000];  // 存储后缀的运算符char str[1005];  // 读取字符串scanf("%d",&T);while(T--){scanf("%s",str);len=strlen(str);pr=-1;po=-1;cr=-1;co=-1;for(i=len-2;i>=0;i--){if(str[i]>='0'&&str[i]<='9'){while(str[i]=='.'||(str[i]>='0'&&str[i]<='9')){pr++;pre[pr]=str[i];i--;}pr++;pre[pr]=' ';}if(i<0)break;if(str[i]==')'){cr++;chr[cr]=str[i];}else if(str[i]=='('){while(cr>=0&&chr[cr]!=')'){pr++;pre[pr]=chr[cr];pr++;pre[pr]=' ';cr--;}cr--;}else if(str[i]=='*'||str[i]=='/'){cr++;chr[cr]=str[i];}else{while((chr[cr]=='*'||chr[cr]=='/')&&cr>=0&&chr[cr]!=')'){pr++;pre[pr]=chr[cr];pr++;pre[pr]=' ';cr--;}cr++;chr[cr]=str[i];}}while(cr>=0){pr++;pre[pr]=chr[cr];pr++;pre[pr]=' ';cr--;}pre[pr]='\0';len2=strlen(pre);for(i=len2-1;i>=0;i--)printf("%c",pre[i]);printf(" =\n");for(i=0;str[i]!='\0';i++){if(str[i]>='0'&&str[i]<='9'){while(str[i]=='.'||(str[i]>='0'&&str[i]<='9')){printf("%c",str[i]);i++;}printf(" ");}if(str[i]=='=')break;if(str[i]=='('){co++;cho[co]=str[i];}else if(str[i]==')'){while(co>=0&&cho[co]!='('){printf("%c ",cho[co]);co--;}co--;}else if(str[i]=='*'||str[i]=='/'){while(cho[co]=='*'||cho[co]=='/'){printf("%c ",cho[co]);co--;}co++;cho[co]=str[i];}else{while(co>=0&&cho[co]!='('){printf("%c ",cho[co]);co--;}co++;cho[co]=str[i];}}while(co>=0){printf("%c ",cho[co]);co--;}printf("=\n");k=len2-1;printf("%.2f\n",eval());}return 0;
}        

NYOJ 409 郁闷的C小加(三)相关推荐

  1. NYOJ409 郁闷的c小加三

    传送门:http://acm.nyist.net/JudgeOnline/problem.php?pid=409 NYOJ郁闷的c小加一.二.三都是关于表达式转换及求值的,主要涉及栈知识点.郁闷的c小 ...

  2. NYOJ 267 郁闷的C小加(二)

    郁闷的C小加(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 聪明的你帮助C小加解决了中缀表达式到后缀表达式的转换(详情请参考"郁闷的C小加(一)&quo ...

  3. NYOJ 257 郁闷的C小加(一)

    郁闷的C小加(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 我们熟悉的表达式如a+b.a+b*(c+d)等都属于中缀表达式.中缀表达式就是(对于双目运算符来说)操 ...

  4. NYOJ 236 心急的C小加

    心急的C小加 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间 ...

  5. nyoj 236 心急的C小加(偏序集问题)

    描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果第i+1个木棒的重量和长度都大于等于第i个处理的木棒,那么将不会耗费时间,否则需 ...

  6. NYOJ - 心急的C小加

    心急的C小加 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 4 描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位 ...

  7. 一加三折腾一下lineage

    上篇文章说了一加三基于氧OS9.0.6安装kali nethunter:https://blog.csdn.net/Qwertyuiop2016/article/details/118105155 实 ...

  8. python编程剪刀石头布思路_剪刀石头布小习题三种语言python2、php、go代码

    剪刀石头布小习题三种语言python2.php.go代码 # coding:utf-8 """ python核心编程6-14习题的解题思路 设计一个"石头,剪子 ...

  9. 一百馒头一百僧,大僧三个更无争,小僧三人分一个大小和尚得几丁?

    如题:一百馒头一百僧,大僧三个更无争,小僧三人分一个大小和尚得几丁? 要求使用java实现求得大僧小僧各有多少人? public class shdjshj {public static void m ...

最新文章

  1. 自己不清醒,却要拉更多人陪葬的人!
  2. 无数学不华为?人工智能时代的数学家还将走得更远
  3. python时间序列画图_简洁的Python时间序列可视化实现
  4. java map的遍历
  5. sharepoint 页面定制经验小结
  6. 大屏做成这样,领导不重用你都难
  7. 计算本周是几号到几号
  8. sql server 比较大小
  9. 计算机网络技术 网络参数配置与常用网络命令使用和网络仿真工具的使用
  10. 泛微8.0前端通用代码
  11. 中国工科研究生200多篇英文论文中最常见的习惯(The Most Common Habits from more than 200 English Papers written by Gradua)
  12. miui12和鸿蒙系统,鸿蒙2.0和miui12对比_鸿蒙2.0和miui12使用对比
  13. 清晰易懂的“K个一组翻转链表”解法
  14. 怎样招聘出色的产品经理
  15. 详谈C++11新特性之future及开源项目ananas(folly,std c++11和ananas的future各自的区别是?)
  16. 两物体的相对速度公式_为什么以光速相向飞行的两物体的相对速度不是2C?相对论还适用?...
  17. java null和空
  18. 六轴加速度传感器MPU6050官方DMP库到瑞萨RL78/G13的移植
  19. 宝宝取名的步骤及技巧
  20. VS2019 创建第一个.Net Core ABP项目

热门文章

  1. IC攻城狮求职宝典 01 2018年IC设计企业 笔试题 01 英伟达(Nvidia)
  2. mikrotik ros ***借线
  3. 2017甲骨文JavaOne参会感想
  4. 关于 HeartBleed 安全漏洞的 2 张漫画
  5. 【NOIP2013】货车运输
  6. kmdjs api reference
  7. python处理 ctrl+c
  8. mac支持NVDANV顯卡型號持列表
  9. System Center 2012与vCenter Operations 产品功能对比
  10. cleanmymac能够很方便的清理mac上面没用的软件,尤其是这个清理大文件的功能