The Algorithm for Evaluating a Postfix Expression is given here
Program:
Program:
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#define SIZE 40
int stack[SIZE];
int top=-1;
void push(int n)
{
if(top==SIZE-1)
{
printf("Stack is full\n");
return;
}
else
{
top=top+1;
stack[top]=n;
printf("Pushed element is %d\n",n);
}
}
int pop()
{
int n;
if(top==-1)
{
printf("Stack is empty\n");
return;
}
else
{
n=stack[top];
top=top-1;
printf("The poped element is %d\n",n);
return(n);
}
}
int evaluate(int op1, int op2,char ch)
{
printf("op1=%d op2=%d ch=%c\n",op1,op2,ch);
int n;
if (op1<op2)
{
n=op1;
op1=op2;
op2=n;
}
if(ch=='+')
n=op1+op2;
else if(ch=='-')
n=op1-op2;
else if(ch=='*')
n=op1*op2;
else if(ch=='/')
n=op1/op2;
else if(ch=='%')
n=op1%op2;
else
{
printf("The operator is not identified\n");
exit(0);
}
printf("n=%d\n",n);
return(n);
}
int main()
{
char str[50],ch,ch1;
int i=0,n,op1,op2;
printf("Enter the Postfix string\n");
scanf("%s",str);
ch=str[i];
while(ch!='\0')
{
printf("The char is=%c\n",ch);
//if(ch=='1' || ch=='2' || ch=='3' || ch=='4' || ch=='5')//
if(isdigit(ch))
{
n=ch-'0';
push(n);
}
else
{
op1=pop();
op2=pop();
n=evaluate(op1,op2,ch);
push(n);
}
ch=str[++i];
}
printf("The value of the arithmetic expression is=%d\n",pop());
return;
}
do not swap the operands it will affect the division
ReplyDeletenot only in swapping but also in other operations
ReplyDeleteactually...swapping the operands does not affect any operation. either 4 8 / or 8 4 / returns 2. Although it wouldve been nicer if this program worked for multiple digit numbers also.
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteHey Buddy.
ReplyDeleteTried your program. It works great I guess.
You can compare it with my program here
Click Me
It does not work for multiple digits.
ReplyDeleteThank you very very very very very much ...,
ReplyDeleteGreat! Thanks a lot! :) The best answer for my assignment.
ReplyDeleteGood
ReplyDeleteHere is a link for C/C++ programs and pointer programs. This may be useful for you.
C Programs
C++ Programs