C中的rpn计算器程序

时间:2019-05-22 20:19:28

标签: c rpn

我有一个作业,要求我创建一个程序,该程序逐个字符地扫描一个字符串,如果该字符是一个数字,则将该数字放在堆栈中,但是如果它是一个操作符,则从中提取2个元素堆栈,操作的结果被压入堆栈,在程序结束时,堆栈中唯一剩下的东西必须是最终结果。教授告诉我们使用两个特定的函数void push(int stack [], int * t,int obj);和pop(int stack [],int * t);我对此有些陌生,所以我希望对当前代码应解决的问题发表一些评论。谢谢

#include"mystack.h"
#include<stdio.h>
#include<ctype.h>
#define MAX 100

int arr[MAX],stac[MAX];
int i,add,di,mul,sub,*tp;
char c;

int main()
{
    *tp = -1;
    add = pop(stac,&tp) + pop(stac,&tp);
    sub = pop(stac,&tp) - pop(stac,&tp);
    mul = pop(stac,&tp) * pop(stac,&tp);
    di = pop(stac,&tp) + pop(stac,&tp);

    while(1) {
        c = getchar();
        return c;
        if (isdigit(c)) {
            arr[i] = (int)c;
        }
        else if(c == '+') {
            push(stac,&tp,add);
        }  
        else if(c == '-') {
            push(stac,&tp,sub);
        }  
        else if(c == '*') {
            push(stac,&tp,mul);
            printf("Result is=%d\n");
        }
        else if(c == '/') {
            push(stac,&tp,di);
        }
        else if(c == '\n') {
            break;
        }
        else{
            printf("Unknown command\n");
        }
        i++;
    }
    return 0;
}

功能体在另一个程序中,

void push(int stack[], int *t, char obj) 
{ 
    if ((*t) == (N-1))
    {
        printf("ERROR! Stack overflow...\n");
        getchar();
        abort();
    }
    else {
        stack[++(*t)] = obj;
    }
}
void pop(int stack[], int *t)
{
    char r;
    if ((*t) < 0)
    {
        printf( "ERROR! Empty stack, unable to pop...\n" );
        getchar();
        abort();
    }
    else {
        r=stack[(*t)--];
    }
}

这有一些错误,我不知道该如何解决,所以它无法运行。

0 个答案:

没有答案