读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。

Input

测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。

Output

对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。

Sample Input

1 + 2
4 + 2 * 5 - 7 / 11
0

Sample Output

3.00
13.36
 1 #include<iostream>
2 #include<stack>
3 #include<cstring>
4 #include<stdlib.h>
5 using namespace std;
6
7 int judge(char c)
8 {
9 if(c=='+'||c=='-'||c=='*'||c=='/'||c=='=')
10 return 1;
11
12 return 0;
13 }
14 char Precede(char a,char b)
15 {
16 if(a=='*'||a=='/')a='*';
17 if(b=='*'||b=='/')b='*';
18 if(a=='+'||a=='-')a='+';
19 if(b=='+'||b=='-')b='+';
20 if(a=='#')return '<';
21 if(b=='=')return '>';
22 if(a=='+'&&b=='+'){return '>';}
23 else if(a=='+'&&b=='*')return '<';
24 else if(a=='*'&&b=='*')return '>';
25 else if(a=='*'&&b=='+')return '>';
26 }
27
28 double operat(double n1,double n2,char e)
29 {
30 switch(e)
31 {
32 case '+':return (n1+n2);
33 case '-':return (n1-n2);
34 case '*':return (n1*n2);
35 case '/':return (n1/n2);
36 }
37 }
38 int main()
39 {
40 char a[205];
41 int j;
42 while(1)
43 {
44 gets(a);
45 if(strcmp(a,"0")==0)break;
46 stack<double>num;
47 stack<char>ch;
48 j=0;
49 char b[205];
50 ch.push('#');
51 int i=0;
52 for(i=0;a[i]!='\0';i++);
53 a[i]='=';
54 i=0;
55 while(a[i]!='='||ch.top()!='#')
56 {
57 if(a[i]==' ')
58 {i++;}
59 else if(judge(a[i])==1)
60 {
61 switch(Precede(ch.top(),a[i]))
62 {
63 case '<':ch.push(a[i]);i++;break;
64 case '>':
65 char e=ch.top();
66 ch.pop();
67 double n2=num.top();
68 num.pop();
69 double n1=num.top();
70 num.pop();
71 num.push(operat(n1,n2,e));
72 }
73 //ch.push(a[i]);
74 }
75 else if(a[i]>='0'&&a[i]<='9')
76 {
77 double s=0;
78 while(a[i]>='0'&&a[i]<='9')
79 {
80 s=s*10+a[i]-'0';
81 i++;
82 }
83 num.push(s);
84 }
85 }
86 printf("%.2lf\n",num.top());
87 while(!num.empty())
88 {
89 num.pop();
90 }
91 while(!ch.empty())
92 {
93 ch.pop();
94 }
95 }
96 return 0;
97 }

STL练习-简单计算器的更多相关文章

  1. hdu1237 简单计算器[STL 栈]

    目录 题目地址 题干 代码和解释 参考 题目地址 hdu1237 题干 代码和解释 解本题时使用了STL 栈,要记得使用#include<stack>. 解本题时使用了isdigit()函 ...

  2. 1.C#WinForm基础制作简单计算器

    利用c#语言编写简单计算器: 核心知识点: MessageBox.Show(Convert.ToString(comboBox1.SelectedIndex));//下拉序号 MessageBox.S ...

  3. 菜鸟学Android编程——简单计算器《一》

    菜鸟瞎搞,高手莫进 本人菜鸟一枚,最近在学Android编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少 ...

  4. PAT 06-1 简单计算器

    想看一般简单计算器实现的看客不好意思了,这不是你想要点东西,此处题设为“只能进行加减乘除”.“都是整数”.”优先级相同“和"从左到右".此题来自PAT(http://www.pat ...

  5. php大力力 [005节] php大力力简单计算器001

    2015-08-22 php大力力005. php大力力简单计算器001: 上网看视频,看了半天,敲击代码,如下: <html> <head> <title>简单计 ...

  6. PHP实现简单计算器

    <!--简单的计算器--> <!DOCTYPE html> <html> <head> <title>PHP实现简单计算器</titl ...

  7. c#部分---网吧充值系统;简易的闹钟;出租车计费;简单计算器;对战游戏;等额本金法计算贷款还款利息等;随机生成10个不重复的50以内的整数;推箱子;

    网吧充值系统namespace ConsoleApplication1 { class Program { struct huiyuan { public string name; public st ...

  8. JavaWeb学习记录(二十)——Model1模式(javaBean+jsp)实现简单计算器案例

    ¨JSP技术提供了三个关于JavaBean组件的动作元素,即JSP标签,它们分别为: ¨<jsp:useBean>标签:用于在JSP页面中查找或实例化一个JavaBean组件. ¨< ...

  9. 一个用WPF做的简单计算器源代码

    一.界面设计XAML代码 <Window x:Class="fengjisuanqi.MainWindow" xmlns="http://schemas.micro ...

  10. hdu 1237 简单计算器

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

随机推荐

  1. MYSQL表操作(中篇)--数据类型

    1.数据类型 数值类型 1.整数类型 整数类型:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT 作用:存储年龄,等级,id,各种号码等 默认是有符号的 int[(m)][u ...

  2. 5-6:实现多窗口之异常(AttributeError: 'list' object has no attribute 'click')

    代码: #coding = utf-8 from selenium import webdriver import time ##############5-6:实现多窗口切换_start###### ...

  3. nginx 编译安装支持 upload progress module, upload module

    下载地址: wiki.nginx.org/HttpUploadModule wiki.nginx.org/HttpUploadProgressModule 下载后解压至:/usr/src/文件夹下,其 ...

  4. WPFGroupBox控件自定义

    先上效果图 直接上代码(直接在Window.Resources里面添加这段代码) <Style TargetType="GroupBox"> <Setter Pr ...

  5. MySQL 常用命令(1)------连接、添加用户与授权

    一.连接MySQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL 进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码 ...

  6. oracle 数据库备份脚本(数据泵1-全库)

    #!/bin/sh# ################################################################### Powered by Ironfo# ## ...

  7. trzcopy

    @echo offcd /d %~dp0setlocal enabledelayedexpansionset aa=伟大的中国!我为你自豪echo 替换前:%aa%echo 替换后:%aa:中国=中华 ...

  8. JS篇(003)-请用 js 去除字符串空格?

    答案:replace 正则匹配方法.str.trim()方法.JQ 方法:$.trim(str)方法 解析: 方法一:replace 正则匹配方法 去除字符串内所有的空格:str = str.repl ...

  9. 合并B站video.m4s和audio.m4s

    ffmpeg -i D:\a\video.m4s -i D:\a\audio.m4s -codec copy D:\a\a.mp4

  10. nebula命令行无法查看配置信息

    版本为nebula2.0.1 正在部署集群,节点数比较多,直接在一个节点配置好配置文件,分发到其他节点, 为了减少后续修改配置文件时再为配置文件添加--local_config=true,所以直接加上 ...