hdu 1237 简单计算器(栈处理)
简单计算器
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 26553 Accepted Submission(s): 9626
0
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stack>
using namespace std;
stack<double>num;
int main()
{
double n;
while(scanf("%lf", &n))
{
char c,k;
c = getchar();
if(c=='\n' && n==)
break;
num.push(n);
double m;
while()
{
cin>>k;
cin>>n;
if(k == '*')
{
m = num.top();
m*=n;
num.pop();
num.push(m);
}
else if(k == '/')
{
m = num.top();
m/=n;
num.pop();
num.push(m);
}
else if(k == '+')
{
num.push(n);
}
else if(k == '-')
{
num.push(-n);
}
if(getchar()=='\n') //本行输入完毕
break;
}
double sum = ;
while(!num.empty())
{
sum+=num.top();
num.pop(); //使用完后栈一定要清空
}
printf("%.2lf\n", sum); }
return ;
}
一般方法模拟
#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
int main()
{
double a[];
double s, ss;
char k, f;
while (cin >> s)//题目要求多次输入
{
int flag = , i = ;
memset(a, , sizeof(a));
a[] = s;
f = getchar();
if (s == && f == '\n')
{
flag = ;
break;
}
while()//优先处理*、/运算
{
cin >> k;//输入运算符
cin >> ss;
if (k == '*')
a[i] = a[i] * ss;
if (k == '/')
a[i] = a[i] / ss;
if (k == '+')
a[++i] = ss;
if (k == '-')
a[++i] = (-)*ss;
if (getchar() == '\n')
break;
}
if (flag == )
{
double sum = ;
for (int j = ; j <= i; j++)
sum = sum + a[j];
printf("%.2lf\n", sum);
}
}
return ;
}
hdu 1237 简单计算器(栈处理)的更多相关文章
- HDU 1237 简单计算器 栈
额,题目是中文的,题意就不用说了= =都看懂喽.写个字符串先把这行计算式存进去,不过不能存一个算一个,因为考虑到乘除法比加减法优先的原则,如果是加号减号就先存着等待计算,如果是乘号除号就直接算出来值就 ...
- hdu 1237 简单计算器
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1237 简单计算器 Description 读入一个只包含 +, -, *, / 的非负整数计算表达式, ...
- HDU 1237 简单计算器(栈+stringstream)
提供几份代码,这题的输入可以用stringsteam处理,先处理乘除后处理加减,正常思路,但是后面统计加减法的时候,对栈的运用错了,我用的时候相当于给它多加了几个括号就错了. 正确的简单解法就是,加法 ...
- hdu 1237 简单计算器 (表达式求值)【stack】
<题目链接> 题目大意: 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. Input测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符, ...
- hdu-1237简单计算器(栈的运用)
http://acm.hdu.edu.cn/showproblem.php?pid=1237 简单的栈的运用. 首先将数字和运算符分离,分别保存在两个数组中,然后按原来的式子的顺序,首先将第一个数和第 ...
- hiho #1332 : 简单计算器 栈+递归
#1332 : 简单计算器 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 编写一个程序可以完成基本的带括号的四则运算.其中除法(/)是整除,并且在负数除法时向0取整.( ...
- hdoj 1237 简单计算器
简单计算器 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- F - 简单计算器(栈)
F - 简单计算器 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descripti ...
- HDU1237 简单计算器 栈
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1237 题目大意:读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. 题目分 ...
随机推荐
- 杀毒软件 avg
http://filehippo.com/download_avg_antivirus_64 R studio: https://www.rstudio.com/products/rstudio/do ...
- Office Web APP预览如何去掉顶部版权标志“Microsoft Office Web Apps”
在Office Web APP的预览会涉及4中类型的文 件:Word.Excel.PowerPoint.PDF,不同的类型在预览时调用的文件是不一样的,其中Word和 PDF调用的是同一个文件.每个预 ...
- Linux下的fdlisk - l 用法解析-入门篇
fdlisk - l 的含义是查看linux下面的磁盘分区大小.这个大小包含了很多信息. 我们来看度娘的一则介绍: FDISK进行硬盘分区从实质上说就是对硬盘的一种格式化.当我们创建分区时,就已经设置 ...
- 软工作业WordCount
github项目传送门:https://github.com/zzh010/My-wc 一.WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命 ...
- 关于VBS的一个怪现象
今天一个同学让我帮忙写一个程序,要求是: 输入一个n,返回从0到n中任意个数的组合,返回取异或结果为0的组合.来看VBS代码 n = p = "" ^n - s = s = s ) ...
- Android下拉选择框之PopupWindow
1.效果图 2.思路分析 1.点击弹出对话框 popupwindow 2.对popupwindow进行相关设置,popupwindow中设置view为listview 3.listview中item设 ...
- create-react-app设置proxy反向代理不起作用
在CRA2.X升级以后对proxy的设置做了修改,引用官方升级文档: Object proxy configuration is superseded by src/setupProxy.js To ...
- angular ng-content
<p> child works! </p> <ng-content></ng-content> <app-child> 父组件投影 < ...
- 微信 oauth2 两次回调
场景: logger.Info("f: " + wx.From); logger.Info("c: " + wx.Code); logger.Info(&quo ...
- JavaScript 如何工作:渲染引擎和性能优化技巧
翻译自:How JavaScript works: the rendering engine and tips to optimize its performance 这是探索 JavaScript ...