Advertisement
Guest User

Untitled

a guest
Apr 8th, 2020
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.69 KB | None | 0 0
  1. #include<stdio.h>    
  2. #include<string.h>      
  3. #define MAX 50          
  4. int stack[MAX];          
  5. char post[MAX];          
  6. int top=-1;              
  7. void pushstack(char a);  
  8. void pushstack2(char a);  
  9. void evaluate(char c);  
  10. int main()
  11. {
  12.     int i,l;
  13.     printf("Insert a postfix notation :: ");
  14.     gets(post);                  
  15.     l=strlen(post);              
  16.     for(i=0;i<l;i++)
  17.     {
  18.         if(post[i] == ' '){
  19.             continue;
  20.         }
  21.         if (post[i] == '-' && post[i+1]>='0' && post[i+1]<='9'){
  22.             pushstack2 (post [i+1]);
  23.             i++;
  24.         }
  25.         else if(post[i]>='0' && post[i]<='9')
  26.         {
  27.             pushstack(post[i]);        
  28.         }
  29.         else if(post[i]=='+' || post[i]=='-' || post[i]=='*' ||
  30.         post[i]=='/' || post[i]=='^')      
  31.         {
  32.             evaluate(post[i]);          
  33.         }
  34.  
  35.     }                      
  36.     printf("\n\nResult :: %d",stack[top]);
  37.     return 0;
  38. }
  39.  
  40. void pushstack2(char a)        
  41. {
  42.     top++;                              
  43.     stack[top]=(int) a - 48;  
  44.     stack[top]=-stack[top];
  45. }
  46.  
  47. void pushstack(char a)        
  48. {
  49.     top++;                            
  50.     stack[top]=(int) a - 48;  
  51. }
  52.  
  53. void evaluate(char c)      
  54. {
  55.     int a,b,ans;      
  56.     a=stack[top];      
  57.     stack[top]='\0';    
  58.     top--;                
  59.     b=stack[top];        
  60.     stack[top]='\0';      
  61.     top--;                
  62.     switch(c)    
  63.     {
  64.         case '+':          
  65.             ans=b+a;
  66.             break;
  67.         case '-':          
  68.             ans=b-a;
  69.             break;
  70.         case '*':            
  71.             ans=b*a;
  72.             break;
  73.         case '/':          
  74.             ans=b/a;
  75.             break;
  76.     }
  77.     top++;            
  78.     stack[top]=ans;        
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement