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 读入一个只包含 +, -, *, / 的非负整数计算表达式, ...
随机推荐
- sudo apt update 没有 Release 文件
注: 不同环境出错原因可能不同,本文仅供参考. 今天在Ubuntu 19.04 系统运行指令 sudo apt update 时,忽然提示错误,报错如下: 404 Not Found [IP: 101 ...
- 单个表空间文件个数达到上限 ORA-01686
# 问题概述因在oracle数据库表空间管理中的时候 报 ORA-01686: max # files (1023) reached for the tablespace GPRS SQL> a ...
- Lecture 2. Fundamental Concepts and ISA - Carnegie Mellon - Computer Architecture 2015 - Onur Mutlu
并不只有冯诺依曼模型,按照控制流顺序执行指令 还有 data flow 模型,按照数据流顺序执行指令 冯诺依曼模型和数据流模型的编程语言的一个对比 Control-driven 编程模型和 data- ...
- HTTP请求报文(请求行,请求头,请求体)
HTTP协议 1.简介 HTTP协议(Hyper Text Transfer Protocol,超文本传输协议),是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的 ...
- ES6新增运算符 ?? || &&
运算符(?? || &&) && 与运算符 &&左边表达式为真时执行右边表达式 let a = true let b = 0 a && ...
- laravel 内置auth()登录
auth()命令 auth()->attempt() 登录验证 auth()->check 判断是否登录,有没有session缓存 auth()->log ...
- [BOM]前端解析cookie为对象
参考解析页面传参 var cookie_str = document.cookie var cookie_arr = cookie_str.split("; ") var cook ...
- 使用CefSharp获取A标签中的内容
js = @"(function (){ return document.querySelectorAll('a')[0].innerHTML})(); "; chromeBrow ...
- C/C++ FILE 和 fstream 用法详解
FILE 是C语言自带的文件操作结构体, fstream 是C++的文件操作类,两者使用都比较常见,且用法比较类似,再次记录. 功能 FILE fstream 打开文件 FILE* fopen(cha ...
- 「DIARY」PKUSC 2021 游记
冬令营没了但是还有夏令营 (完蛋,前两天忘写游记了,完全没想起来--最后一天补一补) 试题分析在另外一篇博客上 # Day 0 早上去机场的时候把手机落在出租车上了 (还好之后找回来了),导致我前两天 ...