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;
}
#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