Как оценивать постфиксного выражения с использованием стека персонажа, используя конвертирование в ASCII
The code is implemented using ADT by including the "stack.h" user defined header file. The header file has code for stack operation. I am getting wrong outputs for results greater than 9. What changes should I make in the code to get the correct output. I have to use a stack with char data and not int data.
#include<iostream> #include<string.h> #include "stack.h" using namespace std; void posteva(char postfix[]) { stack s; int i=0; while(postfix[i]!='\0') { char x=postfix[i]; if(isdigit(x)) { s.push(x); } else { int op1=s.pop()-'0'; int op2=s.pop()-'0'; int res; switch(x) { case '+': res=op1+op2; break; case '-': res=op1-op2; break; case '*': res=op1*op2; break; case '/': res=op1/op2; break; case '%': res=op1%op2; break; } s.push(res+'0'); } i++; } cout<<"\n\nRESULT :"<<s.pop(); } int main() { char postfix[20]; cout<<"\n\nEnter the postfix : "; cin>>postfix; posteva(postfix); }
Что я уже пробовал:
Например, для постфиксного выражения "63*" я получаю результат как B.