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

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. CPU、内存的占用率

    要获取不包含百分比符号的内存占用率: #free -t | awk 'NR ==2 {print "Current Memory Utilization is: "$3/$2*10 ...

  2. Centos 8 安装zabbix 爬坑

    1.安装mininal 8 2.配置静态网络BOOTPROTO=staticIPADDR=192.168.2.1NETMASK=255.255.255.0GATEWAY=192.168.2.200DN ...

  3. Solution - ARC152D Halftree

    首先 \(n\) 为偶数时无解,这是显然的,因为一次加两条边,总边数一定是偶数. 下面我们证明 \(n\) 为奇数时一定有解,直接进行构造. 首先将每一个点编号加上 \(k\) 再模 \(n\) 的答 ...

  4. 1247. 交换字符使得字符串相同 (Medium)

    问题描述 1247. 交换字符使得字符串相同 (Medium) 有两个长度相同的字符串 s1 和 s2,且它们其中 只含有 字符 "x" 和 "y",你需要通过 ...

  5. golang 指针

    一个指针变量指向了一个值的内存地址,类似于变量和常量,在使用指针前你需要声明指针. 每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置.使用&字符放在变量前面对变量进行" ...

  6. iis 无法在Web服务器上启动调试。打开的URL的IIS辅助进程当前没有运行

    今天开发又遇到老问题了,记录一下. 最近换了电脑 win10+vs 2010+oracle11g 客户端. IIS 发布的项目,开始是 把localhost 换成ip地址 总是报 iis 无法在Web ...

  7. MySQL系列-详解mysql数据类型

    MySQL数据类型 (1)数值类型 1.整数型 2.浮点型 3.定点型 (2)日期时间类型 (3)字符串类型 MySQL字段属性 1.空\不为空值:NULL.NOT NULL 2.主键:primary ...

  8. Java下 BigDecimal类型数值的计算(转)

    BigDecimal bignum1 = new BigDecimal("40"); BigDecimal bignum2 = new BigDecimal("7&quo ...

  9. scala中的数据类型

    一.Scala的数据类型 (1). scala中一切数据都是对象,都是Any的子类: (2).scala中数据类型分为两大类:数值类型(AnyVal,即any value,任意值).引用类型(AnyR ...

  10. [自用初学]c++的构造函数

    #include <stdio.h> #include <string.h> class Student { private: int id; char name[32]; p ...