Как выполнить постфиксную операцию с многозначными операндами
Я изучаю польскую нотацию и попробовал программу для оценки постфиксов.
Моя программа отлично работает для однозначных операндов, таких как 0 и 9 . Но для многозначных операндов, таких как 10,55,99, он работает неправильно.
Например: результат, который я хочу, таков
12 5 * = 60, но это дает неправильный ответ.
Я искал в интернете, нашел много решений, но они два сложны для понимания.
Может ли кто-нибудь отредактировать/изменить этот мой код, чтобы я мог использовать многозначные операнды?
Используемый алгоритм приведен ниже:
Что я уже пробовал:
#include<stdio.h> #include<iostream> using namespace std; int s[50]; int top=-1; int space(char ch); int push(int elem) { s[++top]=elem; return 0; } int pop() { return(s[top--]); } int space(char ch) { if( ch == ' ' || ch == '\t' ) return 1; else return 0; } main() { char pofx[50],ch; int i=0; int op1,op2; printf("\n\nRead the Postfix Expression ? "); gets(pofx); while( (ch=pofx[i++]) != '\0') { if(isdigit(ch)) push(ch-'0'); else { op2=pop(); op1=pop(); if(!space(ch)) { switch(ch) { /*case ' ': break; case '\t': break;*/ case '+': push(op1+op2); break; case '-': push(op1-op2); break; case '*': push(op1*op2); break; case '/': push(op1/op2); break; case '^': push(op1^op2); break; } } } } printf("\n Given Postfix Expn: %s\n",pofx); printf("\n Result after Evaluation: %d\n",s[top]); }