执傲爱睡觉 2022-10-08 16:54 采纳率: 50%
浏览 24

后缀式的求值之 pta

问题遇到的现象和发生背景
    提交pta有三个测试点错误
用代码块功能插入代码,请勿粘贴截图
#define _CRT_SECURE_NO_WARNINGS 1
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define Max 100
//运用顺序栈
typedef struct MyStruct
{
    double elem[Max];
    int top;
}Stack;
void InitStack(Stack* s);
double PushStack(Stack* s, double x);
double PopStack(Stack* s);

int main() {
    char c[Max];
    char a[Max];
    double sum = 0, p, q;
    Stack s;
    InitStack(&s);
    int i = 0, j = 0, flag = 0;
    while (1) {
        scanf("%s", &c);
        if (strcmp(c, "+") && strcmp(c, "-") && strcmp(c, "*") && strcmp(c, "/")) {
            sum = strtod(c, NULL);
            PushStack(&s, sum);
        }
        else
        {
            p = PopStack(&s);
            q = PopStack(&s);
            if (strcmp(c, "+") == 0) {
                sum = p + q;
                PushStack(&s, sum);
            }
            else if (strcmp(c, "-") == 0) {
                sum = p - q;
                PushStack(&s, sum);
            }
            else if (strcmp(c, "*") == 0) {
                sum = p * q;
                PushStack(&s, sum);
            }
            else if (strcmp(c, "/") == 0) {
                sum = p / q;
                PushStack(&s, sum);
            }

        }
        if (s.top == 0)
            flag++;
        if (s.top == 0 && flag == 2)
            break;

    }
    sum = PopStack(&s);
    printf("%.1lf\n", sum);
    return 0;
}
void InitStack(Stack* s) {
    s->top = -1;
}
double PushStack(Stack* s, double x) {
    if (s->top == Max - 1)
        return 0;
    s->elem[++s->top] = x;
    return 1;
}
double PopStack(Stack* s) {
    double x;
    if(s->top==-1)
        return 0;
    x = s->elem[s->top--];
    return x;
}

运行结果及报错内容

结果没有问题,和pta的输入输出一致

我的解答思路和尝试过的方法
          做一个栈,是数字就放进去,是符号就取出栈里的两个数字运算,直到栈底为一个数
我想要达到的结果
      pta通过测试,并且指出我测试点过不去的原因
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-09 02:47
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月8日

悬赏问题

  • ¥100 两个按钮控制一个LED
  • ¥15 用C语言写离散数学相关问题
  • ¥30 如何用python的GephiStreamer连接到gephi中,把Python和Gephi的具体操作过程都展示,重点回答Gephi软件的调试,以及如果代码的端口在浏览器中无法显示怎么处理
  • ¥15 ansys机翼建模肋参数
  • ¥15 Sumo软件无法运行
  • ¥15 如何在vscode里搭建stata的编辑环境?
  • ¥15 dify知识库创建问题
  • ¥15 如何用C#的chart画1000万个点不卡顿
  • ¥15 爬虫技术找到网上看过房源客户的电话
  • ¥20 代码:Python随机森林反演生物量数据处理问题