http://acm.hdu.edu.cn/showproblem.php?pid=1237

简单的栈的运用。

首先将数字和运算符分离,分别保存在两个数组中,然后按原来的式子的顺序,首先将第一个数和第一个运算符分别压

如个自的栈,然后判取出两个栈头部的元素,判断符号,如果是乘除就用当前数值乘取出的数字(优先),然后将乘后的数压入栈,

如果是加则将数和取出的数按原序入栈,如果减,就把新的数变负,将数和取出的数按原序入栈。

最后栈中所有元素的和就是结果。

 1 #include<stdio.h>
2 #include<algorithm>
3 #include<stdlib.h>
4 #include<string.h>
5 #include<math.h>
6 #include<iostream>
7 #include<stack>
8 #include<queue>
9 using namespace std;
10 char a[300];
11 char b[300];
12 double c[300];
13 int main(void)
14 {
15 int n,i,j,k,p,q,l;
16 while(gets(a))
17 {
18 l=strlen(a);
19 if(l==1&&a[0]=='0')
20 {
21 break;
22 }
23 double ss=1;
24 double sum=0;
25 int yy=0;
26 for(i=l-1; i>=0; i--)//从后往前循环分离,这样取数比较容易。
27 {
28 if(a[i]<='9'&&a[i]>='0')
29 {
30 sum+=ss*(a[i]-'0');
31 ss*=10;
32 }
33 else if(a[i]==' ')
34 {
35 continue;
36 }
37 else if(a[i]=='+'||a[i]=='-'||a[i]=='*'||a[i]=='/')
38 {
39 c[yy++]=sum;
40 sum=0;
41 ss=1;
42 b[yy++]=a[i];
43 }
44 }
45 c[yy]=sum;
46 stack<double>que;//数栈
47 stack<char>que1;//字符栈
48 if(yy==0)//特判就一个元素直接输出
49 {
50 printf("%.2f",c[0]);
51 }
52 else
53 {
54 que.push(c[yy]);
55 que1.push(b[yy-1]);
56 for(i=yy-2; i>=0; i-=2)
57 {
58 char cc=que1.top();//栈顶元素出栈
59 que1.pop();
60 double m=que.top();//栈顶元素出栈
61 que.pop();
62 if(cc=='*')//判断类型
63 {
64 m*=c[i];
65 que.push(m);
66 }
67 else if(cc=='/')
68 {
69 m=1.0*m/c[i];
70 que.push(m);
71 }
72 else if(cc=='+')
73 {
74 que.push(m);//按原序入栈
75 que.push(c[i]);
76 }
77 else if(cc=='-')
78 {
79 que.push(m);//按原序入栈
80 que.push(0-c[i]);
81 }
82 que1.push(b[i-1]);
83
84 }
85 double pp=0;
86 while(!que.empty())//最后栈中元素的和
87 {
88 pp+=que.top();
89 que.pop();
90 }
91 printf("%.2f",pp);
92 }
93 printf("\n");
94 }
95 return 0;
96 }

hdu-1237简单计算器(栈的运用)的更多相关文章

  1. HDU 1237 简单计算器 栈

    额,题目是中文的,题意就不用说了= =都看懂喽.写个字符串先把这行计算式存进去,不过不能存一个算一个,因为考虑到乘除法比加减法优先的原则,如果是加号减号就先存着等待计算,如果是乘号除号就直接算出来值就 ...

  2. hdu 1237 简单计算器

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1237 简单计算器 Description 读入一个只包含 +, -, *, / 的非负整数计算表达式, ...

  3. hdu 1237 简单计算器(栈处理)

    简单计算器 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  4. HDU 1237 简单计算器(栈+stringstream)

    提供几份代码,这题的输入可以用stringsteam处理,先处理乘除后处理加减,正常思路,但是后面统计加减法的时候,对栈的运用错了,我用的时候相当于给它多加了几个括号就错了. 正确的简单解法就是,加法 ...

  5. hdu 1237 简单计算器 (表达式求值)【stack】

    <题目链接> 题目大意: 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值.  Input测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符, ...

  6. hiho #1332 : 简单计算器 栈+递归

    #1332 : 简单计算器 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 编写一个程序可以完成基本的带括号的四则运算.其中除法(/)是整除,并且在负数除法时向0取整.( ...

  7. hdoj 1237 简单计算器

    简单计算器 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  8. F - 简单计算器(栈)

    F - 简单计算器 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Descripti ...

  9. HDU1237 简单计算器 栈

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1237 题目大意:读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. 题目分 ...

随机推荐

  1. 日常Java 2021/10/18

    Vecter类实现了一个动态数组,不同于ArrayList的是,Vecter是同步访问的, Vecter主要用在事先不知道数组的大小或可以改变大小的数组 Vecter类支持多种构造方法:Vecter( ...

  2. OSGI与Spring结合开发web工程

    简介: 作为一个新的事实上的工业标准,OSGi 已经受到了广泛的关注, 其面向服务(接口)的基本思想和动态模块部署的能力, 是企业级应用长期以来一直追求的目标.Spring 是一个著名的 轻量级 J2 ...

  3. RAC常见的宏

    1. RAC           作用:用来给某个对象的某个属性绑定信号,只要产生信号内容就会把内容给属性赋值            RAC(_label, text) = _textField.ra ...

  4. Dubbo中CompletableFuture异步调用

    使用Future实现异步调用,对于无需获取返回值的操作来说不存在问题,但消费者若需要获取到最终的异步执行结果,则会出现问题:消费者在使用Future的get()方法获取返回值时被阻塞.为了解决这个问题 ...

  5. 阿里云发布CloudOps白皮书,ECS自动化运维套件新升级

    12月10 日,2021云上架构与运维峰会上,阿里云发布业界首部<云上自动化运维白皮书>(简称CloudOps白皮书),并在其中提出了CloudOps成熟度模型.同时,阿里云还宣布了ECS ...

  6. php-正则邮箱验证及详解

    当前的邮箱格式有哪些//1.第1种是QQ邮箱,它的后缀名是,@qq, .com.// 2.第2种是网易邮箱后缀名是,@163.com或者,@126.com// 3.第3种是雅虎邮箱,后缀名是,@yah ...

  7. IOS开发入门教程-总结篇-写给狂热的编程爱好者们

    程序发轻狂,代码阑珊,苹果开发安卓狂!--写给狂热的编程爱好者们 写在前面的话 学习iOS应用程序开发已有一段时间,最近稍微闲下来了,正好也想记录一下前阶段的整个学习过程.索性就从最基础的开始,一步一 ...

  8. Samba 源码解析之SMBclient命令流

    smbclient提供了类似FTP式的共享文件操作功能, 本篇从源码角度讲解smbclient的实现,smbclient命令的具体使用可通过help命令和互联网查到大量资料. 以下从源码角度分析一个s ...

  9. [BUUCTF]PWN5——ciscn_2019_n_1

    [BUUCTF]PWN5--ciscn_2019_n_1 题目网址:https://buuoj.cn/challenges#ciscn_2019_n_1 步骤: 例行检查,64位,开启了nx保护 nc ...

  10. live2d

    原文来自https://www.fghrsh.net/post/123.html Live2D 看板娘 v1.4 / Demo 3 - 内置 waifu-tips.json (博客园等网站引用推荐) ...