hdu 1237 简单计算器

hdu1237(简单计算器) LinkedList类实现栈和队列功能 LinkedList类的强大,既能看做队列,也能看做栈,很好的体现了队列,栈和集合的关系和区别的例题 阅读详情

一直WA,检查n遍也不知哪错,后来想了想一个99位数加99位数float会爆表,然后换了double就AC了,甚是无语。。。。。。

原来写数据结构作业的代码,一个是求逆波兰式,一个是逆波兰式求解,两个代码一合并就提交了,代码长度比较长一点。。。

思路就是先求逆波兰式,然后逆波兰式求解,C++大法保平安。。。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
#include <ctype.h>
#include <stack>
#include <iostream>
#include <sstream>

using namespace std;

stack<char> s;
stack<double> cal;
string r;
string line;

double atod(char *temp) {   ///手动实现将字符数组转换成double,搞不懂C++库为什么没有atod()
    double r = 0;
    for (int i = 0; temp[i] != '\0'; i++) {
        r *= 10.0;
        r += (double)(temp[i] - '0');
    }
    return r;
}

int main()
{
    while (getline(cin, line)) {    ///读入一行
        if (line.length() == 1) break;    ///对于最后输入0结束标志的判断

        while (!s.empty()) s.pop();   ///栈初始化

        char temp[250];
        stringstream ss;
        ss << line;

        r = "";    ///string初始化
        
        ///开始求逆波兰式并将逆波兰式以string形式存入r
        while (ss >> temp) {
            if (isdigit(temp[0])) {    ///若temp中是数,则直接存入逆波兰式
                r += temp;
                r += ' ';
            } else if (s.empty()) {    ///否则,此时temp中为运算符,若栈为空直接存入栈即可
                s.push(temp[0]);
            } else {                  ///若不为空,当temp中运算符优先级高于栈顶的时,直接存入栈
                if ((s.top() == '+' || s.top() == '-') && (temp[0] == '*' || temp[0] == '/')) {
                    s.push(temp[0]);
                } else {   ///当temp中运算符优先级低于等于栈顶的时,弹出栈顶运算符,
                            ///直到temp中的算符优先级高于栈顶的为止,然后将temp压栈
                    while (!s.empty() && !((s.top() == '+' || s.top() == '-') && (temp[0] == '*' || temp[0] == '/'))) {
                        r += s.top();
                        r += ' ';
                        s.pop();
                    }
                    s.push(temp[0]);
                }
            }
        }
        while (!s.empty()) {    ///将栈中剩下运算符的存入逆波兰式
            r += s.top();
            r += ' ';
            s.pop();
        }
        ///逆波兰式存入完毕
        
        ss.clear();
        ss << r;   ///清空ss后,导入stringstream用于后续解析
        
        while (!cal.empty()) cal.pop();  ///初始化栈用于记录计算的数字
        
        ///开始求逆波兰式
        while (ss >> temp) {     ///将字符串流导入temp,和scanf("%s", temp);一样会跳过空格
            if (isdigit(temp[0])) {
                cal.push(atod(temp));
            } else {
                double sum;
                switch(temp[0]) {
                    case '+': {
                        sum = cal.top();
                        cal.pop();
                        sum += cal.top();
                        cal.pop();
                        break;
                    }
                    case '-': {
                        sum = -cal.top();
                        cal.pop();
                        sum += cal.top();
                        cal.pop();
                        break;
                    }
                    case '*': {
                        sum = cal.top();
                        cal.pop();
                        sum *= cal.top();
                        cal.pop();
                        break;
                    }
                    case '/': {
                        sum = cal.top();
                        cal.pop();
                        sum = cal.top() / sum;
                        cal.pop();
                        break;
                    }
                }
                cal.push(sum);
            }
        }
        ///逆波兰式求解完毕
        
        printf("%.2f\n", cal.top());   ///此时栈顶元素即为算式答案
    }
    return 0;
}


《生化危机9:安魂曲》D加密免BIOS破解方案详解 数字版权管理(DRM)技术通过加密手段保护软件版权,Denuvo(D加密)作为主流方案常应用于3A游戏。其原理是通过实时验证机制阻止未授权访问,但可能影响性能表现。本文以《生化危机9》为例,解析一种免BIOS修改的D加密绕过方案,该方案通过授权启动器模拟正版验证流程,保持系统零侵入性。实测表明,该方法在GTX 1060至RTX 3070等多硬件平台均能稳定运行,支持MOD扩展且兼容Reshade画质增强,为玩家提供开箱即用的绿色版体验。 阅读详情

相关推荐

从零编写linux0.11 - 第二章 内核初始化

编程环境:Ubuntu Kylin 16.04 代码仓库:https://gitee.com/AprilSloan/linux0.11-project linux0.11源码下载(不能直接编译,需进行修改) 1.添加内核 进入内核后也不是马上进入main函数,上一章只是暂时设置gdt,此外还要设置idt和其他的一些初始化操作,这些内容也要使用汇编进行编写,此处采用AT&T格式的汇编。 以下为head.s的内容,为了简单起见,内容还是一个死循环。 .globl startup_32 startup_3

皓空Fly的博客 1262

HDU1237——简单计算器

HDU1237——简单计算器时间限制:2000ms;空间限制:65536KB。问题描述:读人一个只包含+、-、*、/ 的非负整数运算的表达式,计算该表达式的值。输入格式:测试输人包含若千测试用例,每个测试用例占一行,每行不超过 200个字符,整数和运算符之间用一个空格分隔;没有非法表达式;当一行中只有 0 时输人结束,相应的结果不要输出。输出格式:对每个测试用例输出一行,即该表达式的值,精确到小数点后两位。输人样例:1 + 20输出样例:3.0013.36。

2201_75496602的博客 606

NMS非极大值抑制算法原理

NMS非极大值抑制算法

pywin 3499

HDU-1237(简单计算器)

刷题第一天:这道题就让我很抓马,和正常的波兰表达式不一样 他这个测试用例没有括号,我的大概思路就是改变了一下,设置一个计算函数和优先级函数,使用流读取每一行表达式,数字压栈,符号的话则进行比较,小于就进入计算函数,最后处理剩余的op即可,只要理解中缀后缀表达式应该可以写出来。

m0_73596392的博客 331

Bochs源码分析 - 26:8259中断控制器介绍

前言 现在我们跟着《x86/x64体系探索及编程》来分析17章内容 -- 8259中断控制器。这个是涉及硬件的,很遗憾,除了大学期间使用STM32搞过一个计算器,其余就没多少硬件编程经验,我在淘宝上找了下大概是这个东东。 https://pdos.csail.mit.edu/6.828/2010/readings/hardware/8259A.pdf 上面是8259A的芯片手册,里面讲的还是挺详细的,虽然里面很多东西还是看不太懂,但是结合着《x86/...

WriteAnything_的博客 967

【无标题】EXCEL实现刷题

运用Excel开发的刷题工具,具有普遍实用性,可将WORD的试题自动导入并实现刷题。

weixin_44081794的博客 2970

简单计算器 HDU - 1237

思路:首先创建一个栈,将第一个数字压入栈,之后如果遇到‘+’,就将下一个数字压入栈,如果遇到‘-’,就将下一个数字取负再压入栈,如果遇到‘*’,就将栈顶元素乘以下一个数字,如果遇到‘/’,就将栈顶元素除以下一个数字,最后再取出栈内所有元素进行累加得到答案。题目大意:读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。

ashbringer233的博客 421

Python 爬虫实战:爬取去哪儿网酒店评价,提取住宿体验关键词

本文介绍了基于去哪儿网酒店评价数据的爬取与分析方法。首先通过分析网页结构和数据加载机制,定位到评价数据的JSON接口及关键参数。然后使用Python搭建爬虫环境,实现多页评价数据的批量采集与存储,并通过反爬策略确保数据获取的稳定性。在文本分析环节,采用jieba分词和TF-IDF算法提取高频关键词,结合词云可视化展示用户关注点。分析结果显示位置、服务、卫生是核心关注维度,同时识别出好评与差评的关键驱动因素。该方法为酒店服务优化和消费者决策提供了数据支持,并可通过扩展实现更深入的情感分析和竞品对比。

2503_91057718的博客 998

stringstream 相关应用_数据类型转换,切割

sttingstream 数据类型转换 数据分割

CaiTianLan的博客 1277

机器人轨迹规划——梯形速度轨迹(超详细)

机器人轨迹 这一系列轨迹教程将主要包括以下内容: 点到点轨迹(P2P) 五次多项式插值轨迹 三次多项式插值轨迹 梯形速度曲线轨迹 双S形速度曲线轨迹 多个自由度轨迹的时间同步 在线轨迹规划 多项式在线轨迹规划 梯形在线轨迹规划 双S形在线轨迹规划 非线性实时轨迹滤波 多点轨迹(Multi-point) 三次样条曲线(cubic spline) 贝赛尔曲线(Bezier Curve) B样条曲线(BSpline) 时间最优轨迹 三次样条时间最优轨迹 任意路径下的时间最优轨迹 时间

出门搔白首,若负平生志 1万+

影楼精修-肤色统一算法解析

本文介绍了影楼精修中肤色统一算法的实现方案,并以像素蛋糕软件为例进行详细分析。肤色统一旨在通过调整人像照片中皮肤区域的颜色,使其看起来更加均匀一致。像素蛋糕软件提供了AI肤色统一和传统肤色统一两种功能,分别适用于不同需求。传统肤色统一算法通过皮肤分割、人脸检测、亮度统一和颜色统一等步骤,实现了对皮肤区域的精细调整。文章还提供了亮度统一的核心代码,并对比了传统算法与AI算法的效果,指出AI算法在自然度和亮度矫正方面表现更优。整体而言,本文为影楼精修中的肤色统一提供了实用的技术参考。

Trent1985的专栏 2062

hdu1237计算器

#include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;string.h&gt; #include &lt;ctype.h&gt; using namespace std;   double stDit[300];//数字栈 char stOp[300],str[300];//字符栈与字符串的栈 int top1,top2; ...

ZMST的博客 455

【Bug已解决】Context window exceeded / Token limit reached — Claude Code 上下文窗口超限解决方案

Claude Code 长会话中报上下文窗口/Token 超限,本质是对话历史、文件内容、工具结果累积超过 200K 上限。文中给出 /clear、/compact、分批读大文件、限制工具输出、配置 autoCompact 等完整方案。

一键难忘的博客 6725

HDU1237简单计算器(栈的应用)

#include <iostream> #include <algorithm> #include <cstdio> #include <stack> #include <cstring> #include <sstream> #include <cstdlib> using namespace std; ...

FlyingJack 297

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

HDU 1237 简单计算器

<br />//HDU 1237 简单计算器<br />http://acm.hdu.edu.cn/showproblem.php?pid=1237<br />//模拟加减乘除<br />//加减乘除,因为乘除比加减的优先级高,所以做一个数组,<br />//如果是加减就存进去,

jw72jw的专栏 1182

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

hdu 1237简单计算器 栈的运用

hdu 1237 简单计算器 题目描述 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。 Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。 Output 对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。 Sample Input 1 + 2 4 + 2 * 5 - 7 / 11 0 Sample Output 3.00 13.36

weixin_46171975的博客 205

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

HDU——1237简单计算器

HDU——1237简单计算器 分析:模拟题,现将一行的字符读入,当遇见数字就放入数子栈,遇见加减放入字符栈, 遇见乘除,将最顶端的数字串和下一个数字进行计算再放入数字栈 _最后将栈里面的元素倒置,进行加减运算,emmm估计队列也可以用的 用stack和对字符串的处理 给的数据也好,每个数字和字符中间都是用空格分开,好判断emmm~ #include<iostream> #include<cs

DeathYmz的博客 784

HDU - 1237 - 简单计算器

HDU - 1237 - 简单计算器 题目: 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。 Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。 Output 对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。 Sample Input 1 + 2 4 + 2 * 5 - 7 / 11 0 Sample Output 3.00 13.36 思

qq_44816011的博客 295

HDU - 1237简单计算器(输出问题)

简单计算器 HDU - 1237题目题解代码 题目 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。 Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。 Output 对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。 Sample Input 1 + 2 4 + 2 * 5 - 7 / 11 0 Sample Output 3.00 13.3

zkpj12的博客 347

HDU 1237 简单计算器 栈

HDU 1237 简单计算器 栈 额,题目是中文的,题意就不用说了= =都看懂喽。写个字符串先把这行计算式存进去,不过不能存一个算一个,因为考虑到乘除法比加减法优先的原则,如果是加号减号就先存着等待计算,如果是乘号除号就直接算出来值就好了。然后,就想到了栈的思想了,写两个栈一个存符号一个存数字,如果是加减号留在栈里,如果是乘除号就直接运...

weixin_30558305的博客 133

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

读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。 Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。 Output 对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。 Sample Input 1 + 2 4 + 2 * 5 - 7 / 11 0 Sample Output 3.00 13.36 ...

shiuxin的博客 761

HDU1237 简单计算器【堆栈】

简单计算器 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 21518Accepted Submission(s): 7722 Problem Description 读入一个只包含 +, -, *, / 的非负整数计算表

海岛Blog 5463

HDU 1237 简单计算器 逆波兰表达式

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1237题意:Problem Description 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。

弱智就要多努力 1108

简单计算器 - HDU 1237

简单计算器 - HDU 1237 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。 Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。 Output 对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。 Sample Input 1 +...

weixin_43872257的博客 212
上一篇: hdu1556 Color the Ball
下一篇: hdu5504 GT and sequence
Daemoonn
博客等级 码龄11年 42粉丝 198原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值