【HDU - 1237】简单计算器 (栈模拟)

题干:

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

Input

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

Output

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

Sample Input

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

Sample Output

3.00
13.36

解题报告:

栈的应用,因为运算有优先级,在刚开始考虑乘法和除法,如果运算符是加法,则直接把那个数字压入栈里,如果是减法,则把那个数的相反数压入栈里,如果是乘法,则取栈头的数相乘,pop出后把结果push进去。

AC代码:

#include<bits/stdc++.h>using namespace std;
char s[205];
int main()
{while(1) {gets(s);if(s[0] == '0' && strlen(s) == 1) break;stack<double > sk;int tmp = 0,flag=1;for(int i = 0; i<strlen(s); i++) {if(s[i] == ' ') continue;else if(s[i] == '+') flag=1;else if(s[i] == '-') flag=2;else if(s[i] == '*') flag=3;else if(s[i] == '/') flag=4;else {tmp = 0;while(s[i]>='0' && s[i] <= '9') {tmp = tmp*10 + (s[i] - '0');i++;}i--;switch(flag) {case 1 : sk.push(tmp);break;case 2 : sk.push(-tmp);break;case 3 : {double x = sk.top() * tmp;sk.pop();sk.push(x);tmp=0;break;}case 4 : {double x = sk.top() / tmp;sk.pop();sk.push(x);tmp=0;break;}}}}double ans=0;while(!sk.empty()) {ans += sk.top();sk.pop();}printf("%.2f\n",ans);}return 0 ;
}

AC代码2:(在https://leetcode-cn.com/problems/basic-calculator-ii/提交)

class Solution {
public:int calculate(string s) {stack<int> sk;int sign = 1;for(int i = 0; i<s.length(); i++) {if(s[i] == ' ') continue;else if(s[i] == '+') sign = 1;else if(s[i] == '-') sign = 2;else if(s[i] == '*') sign = 3;else if(s[i] == '/') sign = 4;else {int tmp = 0;while(i < s.length() && s[i]>='0'&&s[i]<='9') {tmp = tmp * 10 + (s[i] - '0');i++;}i--;if(sign == 1) sk.push(tmp);if(sign == 2) sk.push(-tmp);if(sign == 3) {int x = sk.top();sk.pop();sk.push(x*tmp);}if(sign == 4) {int x = sk.top();sk.pop();printf("%d %d",x,tmp);sk.push(x/tmp);}}}int ans = 0;while(sk.size()) {ans += sk.top();sk.pop();}return ans;}
};

错误代码:

#include<bits/stdc++.h>using namespace std;
char s[10000];
int main()
{while(1) {gets(s);if(s[0] == '0') break;stack<double > sk;int tmp = 0;for(int i = 0; i<strlen(s); i++) {if(s[i] == ' ') continue;else if(s[i] == '+') sk.push((double)tmp),tmp=0;else if(s[i] == '-') sk.push((double)-tmp),tmp=0;else if(s[i] == '*') {double x = sk.top() * tmp;sk.pop();sk.push(x);tmp=0;}else if(s[i] == '/') {double x = sk.top() / tmp;sk.pop();sk.push(x);tmp=0;}else {tmp = tmp*10 + (s[i] - '0');}}double ans=0;while(!sk.empty()) {ans += sk.top();sk.pop();}printf("%.2f\n",ans);}return 0 ;
}

总结:

   这个错误代码都不知道是什么一个思路,所以做这种题,每一步实现的功能需要很明确,比如我如果要读入数,那就一次性都读完,别一个一个读,会造成最后读入的一个数读不进去等问题存在! 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/441855.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ip地址合不合法怎么看_到底醇基燃料合不合法呢?

什么是醇基燃料?醇基燃料合不合法?投资醇基燃料或者自己用有没得回报呢?新能源环保燃料油配方_醇基燃料厂家加盟-四川新源素科技有限公司​www.xysu.net什么是醇基燃料醇基液体燃料主要是以甲醇、乙醇为主混配的液体燃料&#xff0c;甲醇是最简单的饱和脂肪醇&#xff0c;分…

android 通讯录 备份,安卓Android手机通讯录怎么备份 卓联系人备份 卓手机联系人导出...

一旦买新安卓手机&#xff0c;如何才能快速地将通讯录、短信、通话记录、图片以及音乐转移到新手机里?如果还用纯手动复制、输入的方式&#xff0c;就说明你out的太久了。其实&#xff0c;只需短短四步就可以方便的将联系人、照片、音乐、应用等等一键转移完成无缝换机。【步骤…

【POJ - 3259 】Wormholes(Bellman_Ford或spfa算法,判断有向图中是否存在负环)

题干&#xff1a; 农夫约翰在探索他的许多农场&#xff0c;发现了一些惊人的虫洞。虫洞是很奇特的&#xff0c;因为它是一个单向通道&#xff0c;可让你进入虫洞的前达到目的地&#xff01;他的N&#xff08;1≤N≤500&#xff09;个农场被编号为1..N&#xff0c;之间有M&…

android设置window背景颜色,android – 设置标题背景颜色

这个thread将让你开始在xml文件中建立自己的标题栏&#xff0c;并在你的活动中使用它编辑这里是上面链接的内容的简要摘要 – 这只是设置文本的颜色和标题栏的背景 – 没有调整大小&#xff0c;没有按钮&#xff0c;只是最简单的示例res / layout / mytitle.xml – 这是将表示标…

ios 代码设置控件宽高比_iOS--利用比例纯代码适配屏幕大小

首先说下让自己的程序支持iPhone6和6&#xff0c;第一种使用官方提供的launch screen.xib&#xff0c;这个直接看官方文档即可&#xff0c;这里不再多述&#xff1b;第二种方法是和之前iPhone5的类似&#xff0c;比较简单&#xff0c;为iPhone6和6添加两张特殊的pngiPhone6&…

【动态规划模型】金矿模型理解动态规划!(精彩的故事)

对于动态规划&#xff0c;每个刚接触的人都需要一段时间来理解&#xff0c;特别是第一次接触的时候总是想不通为什么这种方法可行&#xff0c;这篇文章就是为了帮助大家理解动态规划&#xff0c;并通过讲解基本的01背包问题来引导读者如何去思考动态规划。本文力求通俗易懂&…

android+图标+i_explore+无背景,Android Studio中Android Device Monitor中的File Explore不显示文...

环境&#xff1a;操作系统是Mac&#xff0c;模拟器问题&#xff1a;Android Studio中Android Device Monitor中的File Explore不显示文件本人在自学文件存储&#xff0c;想查看“dada/data”目录&#xff0c;本人在Windows上是可以在File Explore中看到的&#xff0c;在Mac上就…

origin怎么打开txt文本_【每日一学】差示扫描量热法(DSC)测量材料的比热容(3在Origin软件中计算间接法测得比热容的方法)...

在本系列内容第1部分和第2部分中分别介绍了使用DSC法通过间接法测量材料的比热容的常用方法的基本原理和得到高质量比热数据的方法&#xff0c;在完成实验后需要在相关的分析软件中计算所研究的材料的比热容。在目前大多数商品化的DSC仪所附带的分析软件中通常可以额外配置可用…

【HDU - 2809】 God of War(状压dp)

题干&#xff1a; At 184~280 A.D ,there were many kingdoms in China. Three strongest among them are "Wei", "Shu", "Wu". People call this period as "Three Kingdoms". HH is a super "Three Kingdoms" fan, beca…

mysql 优化配置 大批量数据插入_[译] MySQL 最佳实践 —— 高效插入数据

当你需要在 MySQL 数据库中批量插入数百万条数据时&#xff0c;你就会意识到&#xff0c;逐条发送 INSERT 语句并不是一个可行的方法。MySQL 文档中有些值得一读的 INSERT 优化技巧。在这篇文章里&#xff0c;我将概述高效加载数据到 MySQL 数据库的两大技术。LOAD DATA INFILE…

android 移植游戏,Unity游戏移植到Android平台

很多时候不仅需要单纯的运行单个的unity游戏&#xff0c;而是需要将游戏嵌入Android代码中和android其他功能相辅生成一个APP&#xff0c;比如通过android界面的一个按钮来启动一个unity游戏。本文介绍一下主要的过程。1. 将可运行的unity游戏打包为Android project。在Unity界…

code vs 代码格式化排版_23行代码,教你用python实现百度翻译!(建议收藏)

前言&#xff1a;努力折腾的人生虽然不是符合完美生活&#xff0c;但它一定是个很精彩的人生&#xff01;生命在于折腾&#xff0c;正如敲代码一样&#xff0c;你们说是吗&#xff1f;文章主要介绍了用23行python代码实现百度翻译&#xff0c;颇有参考性&#xff0c;喜欢的记得…

【HDU - 1013 】Digital Roots (大数模拟)

题干&#xff1a; The digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then that digit is the digital root. If the resulting value contains two or more digits, those digits are summe…

mete30是鸿蒙系统么,华为mete30pro什么时候能用上鸿蒙系统?

[其他]华为mete30pro什么时候能用上鸿蒙系统&#xff1f;8957电梯直达huafans01303113614新学乍练发表于 2021-4-21 21:43:19来自&#xff1a;HUAWEI Mate 30 Pro 5G最新回复 2021-4-22 12:10:10华为mete30pro什么时候能用上鸿蒙系统&#xff1f;能有确切的时间吗伊凡爱尔顿已臻…

【HDU - 1520】Anniversary party (树形dp)

题干&#xff1a; There is going to be a party to celebrate the 80-th Anniversary of the Ural State University. The University has a hierarchical structure of employees. It means that the supervisor relation forms a tree rooted at the rector V. E. Tretyako…

android assets 文件夹 复制,Android 中 Assets目录下 文件或文件夹的复制

1、文件或文件夹的复制/** 下面两个方法不是AsyncTask的接口** copyFileOrDir 目录复制* copyFile 文件复制*/private void copyFileOrDir(String path) {AssetManager assetManager mContext.getAssets();String assets[] null;try {assets assetManager.list(path);//复制…

python运算符中用来计算整商的是什么_零基础学python,看完这篇文章,你的python基础就差不多了...

Python基础语法1. 认识Python1.1 Python 简介Python 的创始人为吉多范罗苏姆&#xff08;Guido van Rossum&#xff09;。Python 的设计目标&#xff1a;一门简单直观的语言并与主要竞争者一样强大开源&#xff0c;以便任何人都可以为它做贡献代码像纯英语那样容易理解适用于短…

*【HDU - 1242 】 Rescue (反向dfs,或bfs)

题干&#xff1a; Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N * M (N, M < 200) matrix. There are WALLs, ROADs, and GUARDs in the prison. Angels friends want to save Angel. Their task is: approach Ang…

华为鸿蒙os系统转正,华为鸿蒙OS系统正式官宣,转正工作提上日程,明年多款终端将使用...

华为鸿蒙OS系统相信很多小伙伴都不陌生&#xff0c;作为国内现如今顶尖的科技企业。华为这些年的发展也是十分迅速的&#xff0c;而再快速的发展过程中。更多的用户对于华为的新款系统也充满了好奇&#xff0c;要知道一款属于国人自己的国产系统。在之前的国内手机上是几乎不存…

【FZU - 2140 】Forever 0.5 (计算几何,构造)

题干&#xff1a; Given an integer N, your task is to judge whether there exist N points in the plane such that satisfy the following conditions: 1. The distance between any two points is no greater than 1.0. 2. The distance between any point and the ori…