STL练习-简单计算器
读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
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练习-简单计算器的更多相关文章
- hdu1237 简单计算器[STL 栈]
目录 题目地址 题干 代码和解释 参考 题目地址 hdu1237 题干 代码和解释 解本题时使用了STL 栈,要记得使用#include<stack>. 解本题时使用了isdigit()函 ...
- 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学习记录(二十)——Model1模式(javaBean+jsp)实现简单计算器案例
¨JSP技术提供了三个关于JavaBean组件的动作元素,即JSP标签,它们分别为: ¨<jsp:useBean>标签:用于在JSP页面中查找或实例化一个JavaBean组件. ¨< ...
- 一个用WPF做的简单计算器源代码
一.界面设计XAML代码 <Window x:Class="fengjisuanqi.MainWindow" xmlns="http://schemas.micro ...
- hdu 1237 简单计算器
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1237 简单计算器 Description 读入一个只包含 +, -, *, / 的非负整数计算表达式, ...
随机推荐
- navicat图形工具和pymysql模块的使用
一 Navicat 在生产环境中操作MySQL数据库还是推荐使用命令行工具mysql,但在我们自己开发测试时,可以使用可视化工具Navicat,以图形界面的形式操作MySQL数据库 官网下载:http ...
- 线上服务Java进程假死快速排查、分析
引用 https://zhuanlan.zhihu.com/p/529350757 最近我们有一台服务器上的Java进程总是在运行个两三天后就无法响应请求了,具体现象如下: 请求业务返回状态码502, ...
- printf函数size_t的替换字符串zu
参考:https://stackoverflow.com/questions/2524611/how-can-one-print-a-size-t-variable-portably-using-th ...
- 删除File Explorer、This PC、Folders
win+R,输入regedit,打开Registry Editor 定位:Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentV ...
- android手机无线调试
1.手机与电脑先通过usb链接2.adb devices查看是否链接成功(链接成功会显示设备列表)3.adb tcpip 5555(0-65535之间取值,默认5555输进去)5:断开数据线,查看手机 ...
- 解决idea不能自动下载maven配置文件pom.xml下的jar包依赖的问题
表现:无法下载pom配置文件中的依赖包,或只能下载少数包,各项配置都正确的情况 理由未知: 百度了很长一段时间,网上给出比较精准的解决之一是 setting>>maven>>去 ...
- antVue range-picker 限制当前时间之前的时间不可选择
<a-range-picker :format="dateFormat" size="small" :showToday="true" ...
- 2022-04-20内部群每日三题-清辉PMP
1.一个项目已经支出350万美元,现在已经完成400万元美元的工作.该项目的计划价值(PV)为800万美元.主题专家(SME)估算还需要600万美元来完成该项目.完成该项目的技术方法不再有效.当前的完 ...
- python_print 函数 (99乘法表)
print 函数末尾自带换行: i = 1 while i <= 5: print("*") i += 1 执行结果: * * * * * 如果想实现不换行,可以使用拼接,或 ...
- heap 算法函数
这一系列函数是在做 这道题 时发现的 这道题空间卡的很死,是不能用数组存下所有数字进行快排的 后来又尝试用 \(multiset\) 优化空间,发现不行,可能是 \(multiset\) 还有结构性存 ...