From add0511a5c86427fcdc3f9a92da9d978b25d557e Mon Sep 17 00:00:00 2001 From: bmanya24 <114513010+bmanya24@users.noreply.github.com> Date: Fri, 7 Oct 2022 23:00:07 +0530 Subject: [PATCH] Create Evaluation_of_postfix_using_stack.c --- Evaluation_of_postfix_using_stack.c | 78 +++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 Evaluation_of_postfix_using_stack.c diff --git a/Evaluation_of_postfix_using_stack.c b/Evaluation_of_postfix_using_stack.c new file mode 100644 index 0000000..84f5880 --- /dev/null +++ b/Evaluation_of_postfix_using_stack.c @@ -0,0 +1,78 @@ +/*Evaluation of postfix expression in c*/ +#include +#include +#include +#include +#include +int stack[20]; +int top = -1; + +void push(int x) +{ + stack[++top] = x; +} + +int pop() +{ + return stack[top--]; +} + +int main() +{ + char exp[20]; + char *e; + int n1,n2,n3,num; + scanf("%s",exp); + e = exp; + while(*e != '\0') + { + if(isdigit(*e)) + { + num = *e - 48; + push(num); + } + else + { + n1 = pop(); + n2 = pop(); + switch(*e) + { + case '+': + { + n3 = n1 + n2; + break; + } + case '-': + { + n3 = n2 - n1; + break; + } + case '*': + { + n3 = n1 * n2; + break; + } + case '/': + { + n3 = n2 / n1; + break; + } + case '^': + { + n3 = pow(n2,n1); + break; + } + } + push(n3); + } + e++; + } + printf("%d\n\n",pop()); + return 0; +} + +/*Test case +Input +6523+8*+3+* +Expected output +288