C——简单计算器(HDU1237)
Input测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
Output对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
Sample Input
- 1 + 2
- 4 + 2 * 5 - 7 / 11
- 0
Sample Output
- 3.00
- 13.36
- 解题思路:
虽然用数组也可以解决这一类题,但在这里我使用栈来解答这一题。
显然这是一个模拟题。首先把数字和符号分别放入栈中;
计算部分首先计算乘除法,并把计算的结果放入栈内,如果遇到加减号则把数字和符号分别放入另一个栈中
此时另一个栈中就只有加减法,再计算加减法,得到计算结果。(注意计算顺序)
- #include <iostream>
- #include<stack>
- #include<queue>
- #include<cstring>
- #include<cstdio>
- using namespace std;
- int main()
- {
- int i,j,h,g=,d,b,q;
- double ans,x1,x2,k;
- char a[];
- while ()
- {
- memset(a,,sizeof(a));
- k=;h=;ans=;d=,b=;g=;
- gets(a);
- if (strlen(a)==&&a[]=='')break;
- stack<char>f,f2;
- stack<double>s,s2;
- queue<char>f1;
- queue<double>s1;
- for (i=;i<strlen(a);i++)
- {
- if (a[i]==' '){h++;continue;} //分离数字和符号
- else
- {
- if (h%!=){f.push(a[i]);s.push(k);k=;d++;continue;}
- if (h%==){k=k*+(a[i]-'');}
- }
- }
- s2.push(k);
- q=d;
- while (q--) //导入另一个栈内使计算顺序正确(栈是后进先出)
- {
- s2.push(s.top());s.pop();
- f2.push(f.top());f.pop();
- }
- while (d--)
- {
- g=;
- if (f2.top()=='+'||f2.top()=='-') //把加减法放入另一个队列
- {
- f1.push(f2.top());
- s1.push(s2.top());
- f2.pop();
- s2.pop();
- b++;continue;
- }
- if (f2.top()=='*') //计算乘除法
- {
- x1=s2.top();s2.pop();
- x2=s2.top();s2.pop();
- s2.push(x1*x2);
- f2.pop();continue;
- }
- if (f2.top()=='/')
- {
- x1=s2.top();s2.pop();
- x2=s2.top();s2.pop();
- s2.push(x1/x2);
- f2.pop();continue;
- }
- }
- s1.push(s2.top());
- ans+=s1.front();s1.pop();
- while (b--)
- {
- if (f1.front()=='+') //计算加减法
- {
- ans+=s1.front();
- s1.pop();
- f1.pop();continue;
- }
- if (f1.front()=='-')
- {
- ans-=s1.front();
- s1.pop();
- f1.pop();continue;
- }
- }
- if (g==)printf("%0.2lf\n",ans); //g==1用来控制格式(可以去掉)
- }
- return ;
- }
C——简单计算器(HDU1237)的更多相关文章
- 简单计算器--hdu1237(栈的运用)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1237 这是单纯的本题答案: #include<stdio.h> #define N 11 ...
- hdu1237 简单计算器[STL 栈]
目录 题目地址 题干 代码和解释 参考 题目地址 hdu1237 题干 代码和解释 解本题时使用了STL 栈,要记得使用#include<stack>. 解本题时使用了isdigit()函 ...
- HDU1237 简单计算器 2016-07-24 13:34 193人阅读 评论(0) 收藏
简单计算器 Problem Description 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过 ...
- HDU1237 简单计算器 【栈】+【逆波兰式】
简单计算器 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- 1.C#WinForm基础制作简单计算器
利用c#语言编写简单计算器: 核心知识点: MessageBox.Show(Convert.ToString(comboBox1.SelectedIndex));//下拉序号 MessageBox.S ...
- 菜鸟学Android编程——简单计算器《一》
菜鸟瞎搞,高手莫进 本人菜鸟一枚,最近在学Android编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少 ...
- PAT 06-1 简单计算器
想看一般简单计算器实现的看客不好意思了,这不是你想要点东西,此处题设为“只能进行加减乘除”.“都是整数”.”优先级相同“和"从左到右".此题来自PAT(http://www.pat ...
- php大力力 [005节] php大力力简单计算器001
2015-08-22 php大力力005. php大力力简单计算器001: 上网看视频,看了半天,敲击代码,如下: <html> <head> <title>简单计 ...
- PHP实现简单计算器
<!--简单的计算器--> <!DOCTYPE html> <html> <head> <title>PHP实现简单计算器</titl ...
- c#部分---网吧充值系统;简易的闹钟;出租车计费;简单计算器;对战游戏;等额本金法计算贷款还款利息等;随机生成10个不重复的50以内的整数;推箱子;
网吧充值系统namespace ConsoleApplication1 { class Program { struct huiyuan { public string name; public st ...
随机推荐
- 第一个javaWeb项目-注册界面
基本功能: 实现信息录入到数据库和信息规范检查 题目要求: 项目目录: 网页界面: 程序源码: package Dao; import java.sql.Connection; import java ...
- SpringMvc简单使用
SpringMvc框架的简单使用 第一步:导入依赖 <dependencies> <dependency> <groupId>org.springframework ...
- 嵩天老师python网课爬虫实例1的问题和解决方法
一,AttributeError: 'NoneType' object has no attribute 'children', 网页'tbody'没有子类 很明显,报错的意思是说tbody下面没有c ...
- 高精度算法(C/C++)
高精度算法 (C/C++) 做ACM题的时候,经常遇到大数的加减乘除,乘幂,阶乘的计算,这时给定的数据类型往往不够表示最后结果,这时就需要用到高精度算法.高精度算法的本质是把大数拆成若干固定长度的块, ...
- Hbase与Maven工程的Spring配置笔记
1.HBase基本操作 hbase shell: 连接到正在运行的HBase实例 help: 显示一些基本的使用信息以及命令示例. 需要注意的是: 表名, 行, 列都必须使用引号括起来 create ...
- linux man指令的详解
原创内容,欢迎指正 一.基本操作 大多数linux发行版自带用以查找shell命令及其他GNU工具信息的在线手册,man命令就是用来访问存储在linux系统上的手册页面. 例如,查看ls命令手册,语法 ...
- 使用IntelliJ IDEA创建Maven工程
1. 新建项目(点击“+ Create New Project”): 2. 选择Maven,不必选择项目骨架,直接点击Next 按钮即可: 3. 输入项目名称,选择项目位置,输入组织名称,模块名称,项 ...
- React+wangeditor+node富文本处理带图片上传
最近有个需求出现在我的视野中,因为我的另外的博客需要上传文章,但是我不想每次都在我的数据库中慢慢的修改格式,所以我另做了一个后台去编辑文本后发送给服务器,那么这里就涉及到两点,一个是富文本,一个是需要 ...
- 题解【[AHOI2013]作业】
\[ \texttt{Preface} \] 数据貌似很水,据说 \(A_i\leq n\) ,连离散化都不需要. 不知道为啥设块大小为 \(\frac{n}{\sqrt m}\) 会一直 Runti ...
- 题解 SP375 【QTREE - Query on a tree】
\[ \texttt{Preface} \] 这题在 \(\text{Luogu}\) 上竟然不能交 \(C++\) ,会一直 \(Waiting\) ,只能交非 \(C++\) 的语言. 所以打完了 ...