A message for Linux.com registered users: We are in the process of making changes to the Linux forums. Starting Monday, 8/13/18 at 6:00 PM PT, you will be unable to access the forums. They will re-launch as soon as possible on Wednesday, 8/15/18 with new features and improved functionality. Thank you for your patience and stay tuned for the new improved forums.

April 15, 2011

Runtime error in my code...

INFIX TO POSTFIX CONVERSION :

#include
#include
#include
using namespace std;
char ifx[50],pfx[50],stk[50];
int top=-1,n;
void push(char ch)
{
if(top!=n-1)
{
top++;
stk[top]=ch;
}
else
cout<<"\nThe stack is full.";
}
char pop()
{
char rmv;
if(top!=-1)
{
rmv=stk[top];
top--;
return rmv;
}
else
return '#';
}
char topele()
{
char ch;
if(top==-1)
{
ch='#';
return ch;
}
else
ch=stk[top];
}
int chkpres(char ch)
{
ch=topele();
switch(ch)
{
case '^':return 7;
break;
case '/':return 6;
break;
case '*':return 5;
break;
case '+':return 4;
break;
case '-':return 3;
break;
default:return 0;
break;
}
}
/*int braces(char *s)
{
int lftbr,rgtbr=0;
for(int i=0;s[i];++i)
{
if(s[i]=='(')
lftbr++;
else
rgtbr++;
}
if(lftbr==rgtbr)
return 0;
else if(lftbr
return 1;
else return -1;
}*/
int main()
{
char ele,elem,chk,popp,topp;
int pre,pres;
cout<<"\nEnter how many elements you want to enter in the infix expression: ";
cin>>n;
cout<<"\nEnter the infix expression: ";
for(int i=0;i
cin>>ifx[i];
topp=topele();
strcpy(pfx," ");
for(int i=0,j=0;ifx[i]!='\0',pfx[j]!='\0';++i,++j)
{
ele=ifx[i];
if(ele!='^' && ele!='*' && ele!='/' && ele!='+' && ele!='-')
pfx[j++]=ifx[i];
else if(ele=='^'||ele=='*'||ele=='/'||ele=='+'||ele=='-')
{
if(topp=='^'||topp=='*'||topp=='/'||topp=='+'||topp=='-')
{
pre=chkpres(ele);
pres=chkpres(topp);
if(pre>pres)
{
push(pre);
top++;
}
else if(pre<=pres)
pfx[j++]=pres;
}
else
{
push(ele);
topp=ele;
}
}
else if(ele=='(')
{
i++;
}
else if(ele==')')
{
while(topp!='#')
{
popp=topp;
pfx[i]=popp;
}
}
cout<<"---------------"<
}
cout<<"\nThe postfix expression is: ";
for(int i=0;pfx[i]!='\0';++i)
{
cout<
}
cout<
return 0;
}

Click Here!