Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<string.h>
- #define MAX 50
- int stack[MAX];
- char post[MAX];
- int top=-1;
- void pushstack(char a);
- void pushstack2(char a);
- void evaluate(char c);
- int main()
- {
- int i,l;
- printf("Insert a postfix notation :: ");
- gets(post);
- l=strlen(post);
- for(i=0;i<l;i++)
- {
- if(post[i] == ' '){
- continue;
- }
- if (post[i] == '-' && post[i+1]>='0' && post[i+1]<='9'){
- pushstack2 (post [i+1]);
- i++;
- }
- else if(post[i]>='0' && post[i]<='9')
- {
- pushstack(post[i]);
- }
- else if(post[i]=='+' || post[i]=='-' || post[i]=='*' ||
- post[i]=='/' || post[i]=='^')
- {
- evaluate(post[i]);
- }
- }
- printf("\n\nResult :: %d",stack[top]);
- return 0;
- }
- void pushstack2(char a)
- {
- top++;
- stack[top]=(int) a - 48;
- stack[top]=-stack[top];
- }
- void pushstack(char a)
- {
- top++;
- stack[top]=(int) a - 48;
- }
- void evaluate(char c)
- {
- int a,b,ans;
- a=stack[top];
- stack[top]='\0';
- top--;
- b=stack[top];
- stack[top]='\0';
- top--;
- switch(c)
- {
- case '+':
- ans=b+a;
- break;
- case '-':
- ans=b-a;
- break;
- case '*':
- ans=b*a;
- break;
- case '/':
- ans=b/a;
- break;
- }
- top++;
- stack[top]=ans;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement