使用推和弹出的RPN计算器。

时间:2016-06-01 02:38:56

标签: c

我想用push和pop设计一个RPN计算器。但是在运行程序后我没有得到正确的结果。在我使用pop()从堆栈中获取a和b的值之后,似乎c和d都存储了0。有什么建议?

 #include <stdio.h>
 int stack[50];
 int first = 0;
 int main(void){
 int a,b,c,d,e;
 char opr[4];

 printf("Enter 2 numbers \n");
 scanf("%d",&a);
 scanf("%d",&b);
 void push(int x);   // Calling the push function
 int pop();          // Calling the pop function
 push(a);
 push(b);
 printf("Enter the operator \n");
 scanf("%s",&opr[4]);

 switch(opr[4]){
    case '+': c=pop(); d=pop(); e=c+d; break;
    case '-': c=pop(); d=pop(); e=c-d; break;
    case '*': c=pop(); d=pop(); e=c*d; break;
    case '/': c=pop(); d=pop(); e=c/d; break;
    default:  printf("not a valid option");
}
push(e);
printf("%d",e);
printf("%d",stack[50]);
return 0;
}
void push(int x){
    if(first==50){
        printf("The stack is full");
    }else{
        x = stack[first];
        first++;
    }
}
int pop(){
    int y;
    if(first == 0){
        printf("Stack is empty ");
    }else{
        first--;
        y = stack[first];
        return y;
    }
}

0 个答案:

没有答案