鱼C论坛

 找回密码
 立即注册
查看: 1633|回复: 5

灵异事件

[复制链接]
发表于 2018-10-22 18:29:51 | 显示全部楼层 |阅读模式
50鱼币
本帖最后由 claws0n 于 2018-10-22 18:37 编辑

大佬们好,我最近在学习数据结构,栈的过程中遇到了一个灵异事件。

我用C++写了一个后缀表达式计算器,但计算时,发现加、减、除都没有问题,但用到乘法时发现这玩意算出来是正确答案,但压入栈中的却是错误答案,而且错得好像……

算了,演示一下吧。

输入:25 5 *
输出:5.00
输入:25 2 *
输出:12.50
输入:81 9 *
输出:9.00

代码如下
#include <iostream>
#include <cstdio>
#include <stack>

using namespace std;

typedef string::iterator strit;

double calc(double x, double y, char op)
{
        double result;
        switch (op)
        {
        case '+':
                result = x + y;
                break;
        case '-':
                result = x - y;
                break;
        case '*':
                result = x * y;
        case '/':
                result = x / y;
        }
        return result;
}

int main()
{
        int t;
        string str;
        stack<double> st;
        double a, b, c;
        
        getline(cin, str);
        
        for (strit i = str.begin(); i != str.end(); ++i)
        {
                if (*i >= '0' && *i <= '9')
                {
                        t = 0;
                        for (; *i >= '0' && *i <= '9'; ++i)
                        {
                                t = t * 10 + *i - '0';
                        }
                        i--;
                        st.push((double)t);
                }
                else if(*i == '+' || *i == '-' || *i == '*' || *i == '/')
                {
                        b = st.top();
                        st.pop();
                        a = st.top();
                        st.pop();
                        c = calc(a, b, *i);
                        st.push(c);
                }
        }
        printf("%.2f\n", st.top());
        return 0;
}

望大佬指点,代码写的不好的话也请指出,谢谢

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-10-22 18:35:59 | 显示全部楼层
已经搞定了,switch里面少写了两个break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-22 20:59:02 | 显示全部楼层
嘿嘿,细心一点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-24 20:48:20 | 显示全部楼层
你最好再改进一下,把输入格式改成<操作数1><运算符><操作数2>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-10-24 21:09:32 | 显示全部楼层
TCY 发表于 2018-10-24 20:48
你最好再改进一下,把输入格式改成

嗯,正准备做
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-25 21:02:43 | 显示全部楼层
细心一点就好啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-2 18:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表