Rishav_hitk_cse

postfix evaluation

Jul 26th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.16 KB | None | 0 0
  1. #include <iostream>
  2. #include <stack>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. float evaluate(string);
  8. int main(){
  9.     char exp[1000];
  10.     cout<<"Enter a postfix expression separated by','(e.g. 54,6,+):"<<endl;
  11.     cin.getline(exp,1000);
  12.     float x;
  13.    
  14.     x=evaluate(exp);
  15.    
  16.     cout<<"Answer is "<<x<<endl;
  17.     return 0;
  18. }
  19.  
  20. float evaluate(string s){
  21.     int i=0,id=0;
  22.     stack <float> post;
  23.    
  24.     float op1,op2,result,num=0;
  25.     while(s[i]!='\0'){
  26.         if(isdigit(s[i])){
  27.             num=num*10+(int)(s[i]-'0');
  28.             id=1;
  29.         }
  30.         else if(s[i]==','&&id){
  31.             post.push(num);
  32.             id=0;
  33.             num=0;
  34.         }
  35.         else{
  36.             op2=post.top();
  37.             post.pop();
  38.             op1=post.top();
  39.             post.pop();
  40.             switch(s[i]){
  41.                 case '+':result=op1+op2;break;
  42.                 case '-':result=op1-op2;break;
  43.                 case '*':result=op1*op2;break;
  44.                 case '/':result=op1/op2;break;
  45.                 case '%':result=(int)op1%(int)op2;break;
  46.             }
  47.             post.push(result);
  48.         }
  49.         i++;
  50.     }
  51.     return result;
  52. }
Add Comment
Please, Sign In to add comment