Monday, 20 October 2014

C++ program to evaluate prefix expression


C++ program to evaluate prefix expression using stack


C++ program to evaluate prefix expression using stack

#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<math.h>
using namespace std;
class postfix
{
    char post[30];
    public:
        float solve()
        {
            int top=-1,j;
            float stac[30],so;
            char temp[10];
            strrev(post);
            for(int i=0;post[i]!=0;i++)
            {
                if(post[i]==' ')
                    continue;
                if(post[i]>=48&&post[i]<=57)
                {
                    for(j=0;post[i]!=' ';j++,i++)
                        temp[j]=post[i];
                    temp[j]=0;
                    stac[++top]=atof(temp);
                }
                else
                {
                    switch(post[i])
                    {
                    case '+':
                        so=stac[top]+stac[top-1];
                        stac[--top]=so;
                        break;
                    case '-':
                        so=stac[top]-stac[top-1];
                        stac[--top]=so;
                        break;
                    case '*':
                        so=stac[top-1]*stac[top];
                        stac[--top]=so;
                        break;
                    case '/':
                        so=stac[top]/stac[top-1];
                        stac[--top]=so;
                        break;
                    case '^':
                        so=powf(stac[top],stac[top-1]);
                        stac[--top]=so;
                        break;
                    }
                }
            }
            return stac[0];
        }
        void getdata()
        {
            cout<<"Enter expression : ";
            cin.getline(post,30);
        }
};
int main()
{
    postfix con;
    con.getdata();
    cout<<"Result : "<<con.solve();
    return 0;
}

No comments:

Post a Comment