infix to postfix conversion
Posted by Vinod on October 18, 2006
/**********************************************************************
-> This C++ Program is to convert a given infix expression
(either parenthesized or unparenthesized) to postfix form
-> Ex. of infix expression is ::(a+b^c^d)*(c+d)
-> Data Structers used
Stack:array
-> This program works in microsoft vc++ 6.0 environment.
************************************************************************/
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
class expression
{
private:
char infix[100];
char stack[200];
int top;
int r;
char postfix[100];
public:
void convert();
int input_p(char);
int stack_p(char);
int rank(char);
};
int expression::input_p(char c)
{
if(c==’+’ || c==’-')
return 1;
else if(c==’*’ || c==’/')
return 3;
else if(c==’^')
return 6;
else if(isalpha(c)!=0)
return 7;
else if(c==’(‘)
return 9;
else if(c==’)')
return 0;
else
{
cout<<”Invalid expression ::input error\n”;
exit(0);
}
}
int expression::stack_p(char c)
{
if(c==’+’ || c==’-')
return 2;
else if(c==’*’ || c==’/')
return 4;
else if(c==’^')
return 5;
else if(isalpha(c)!=0)
return 8;
else if(c==’(‘)
return 0;
else
{
cout<<”Invalid expression ::stack error\n”;
exit(0);
}
}
int expression::rank(char c)
{
if(c==’+’ || c==’-')
return -1;
else if(c==’*’ || c==’/')
return -1;
else if(c==’^')
return -1;
else if(isalpha(c)!=0)
return 1;
else
{
cout<<”Invalid expression ::in rank\n”;
exit(0);
}
}
void expression::convert()
{
cout<<”\n*************************************************\n”
<<”This program converts the given infix expression\n”
<<”in to postfix form”
<<”\n*************************************************\n”;
cout<<”Enter an infix expression ::\n”;
cin>>infix;
int l=strlen(infix);
infix[l]=’)';
infix[l+1]=”;
//Convertion starts
top=1;
stack[top]=’(‘;
r=0;
int x=-1;
int i=0;
char next=infix[i];
while(next!=”)
{
//Pop all the elements to outputin stack which have higher precedence
while( input_p(next) < stack_p(stack[top]) )
{
if(top<1)
{
cout<<”invalid expression ::stack error\n”;
exit(0);
}
postfix[++x]=stack[top];
top–;
r=r+rank(postfix[x]);
if(r<1)
{
cout<<”Invalid expression ::r<1\n”;
exit(0);
}
}
if(input_p( next ) != stack_p( stack[top]))
stack[++top]=next;
else
top–;
i++;
next=infix[i];
}
postfix[++x]=”;
if(r!=1 || top!=0)
{
cout<<”Invalid expression ::error in rank or stack\n”;
exit(0);
}
cout<<”\n\nThe corresponding postfix expression is ::\n”;
cout<<postfix<<endl;
}
int main()
{
expression obj;
obj.convert();
return 0;
}
/************************************************************************
SAMPLE OUTPUT::
—————
*************************************************
This program converts the given infix expression
in to postfix form
*************************************************
Enter an infix expression ::
(a+b^c^d)*(c+d)
The corresponding postfix expression is ::
abcd^^+cd+*
Press any key to continue
**************************************************************************/
Umesh said
Idiot
Jayesh Panchal said
Check out this version of InFix to PostFix Conversion
http://msumca2012.blogspot.in/2013/02/infix-to-postfix-conversion.html
Pia said
this code doesn’t run…and has so many errors.
shahzad said
use another compiler stupid! code is fine
chandan said
right said this program code has so many errors….!!
sabodhi sharma said
but some error is there
atul jadhav said
very efficient program
thanking you
Harsh said
this code does not run…has got sooooo many errors..
Yashar said
thank you for writing this great one. i really needed it. mer30
akash said
i hate programs
jhen said
if you hate program den don’t read nor study about it! that’s it!
SiiD said
U SUCK @ AKASH..!
rajesh said
it is very use ful
aref said
thank u very much
this is very use full for me
this is my project
coder said
lolz… moron..
pEpo said
nicE one
samik said
Great program! some modifications to be made if it is to be run in turbo C, which any programmer can do with his eyes closed
albert said
thanks this program bcoz dis is our project!!!!!tnks…
Sherrah Mae Guillero said
really can i ask for it ? because we really need it
) thnks
PAKhawk said
Vinods its a Good Hint of postExps for newbies 2 DS.
Great!
Launch said
The program has so many errors…pls correct
shalra said
sooo bad code write ever u r fail……..
hana said
have u program convert infix to postfix using stack implementation linked list ?
elie said
thats my project thank you soo mu ch but can u repair for me cz there is 222 much errors plz i rly appreciate what u will do 10x
adi said
works like a dream , thanks a lot !!!!
mlk said
dn’t work
vasudha said
hey……….
who r u 2 say dont work ?
u didnt do dat thing also………k
new C++ said
how to write A*(B+C)*D infix to postfix
surya said
a*(bc+)*d
(abc+*)*d
abc+*d*
ok said
jkhkhlsadnmfhsdnfasd
rema said
thanks for you
good job ;D
vasudha said
ya………..really u did a gud job vinod…………..
keep it up frnd…………
zulfikar said
Good man….
But i have a problem with this?
Q. i need function for expression like
( ( 10000000000000000000000001231234448563465435434723854278423 / 1111111111234623874627 ) *
(2342384523 + 123124 – 34534534 ) * ( 1231263123242346 + 223423234346 * 234236536 ) )
Need the algorithm or code
If u can do it
Mail me…….
swati said
hi Zulfikar,
Did you get the code. I also want that code. If you have can you please fwd it to me as well
kaviraj said
do u need it……………………..???…..go to http://www.jumbalakka.com
kaviraj said
i need program coding for binary tree traversal…..pls send me dear frndzzz………..my id kavi.skr.raj@gmail.com
jhen said
for infix to postfix conversion
it does’nt run,pls pki edit naman poh kac proj namin yan pls
mahesh said
good job man!
tis codin was really useful for me.
thanks a lot.
abhay bhuva said
aa program c ma banav…
Rithu said
hey ths program is not in C language…
uden said
difficult for me to understand nd it’s so long.
INDEX « Data Structures through C & C++ for beginners said
[...] Ø infix to postfix conversion [...]
analyn said
” tHERE’S something wrong in your program!!!!!!!!!!!!”
karen said
there are so many errors
Eng.ch bilawal rehman said
so gud i like it
but not so tough
jhayehm said
are u using eclipse
jhayehm said
are u using java eclipse ???
sds said
Apna dimag bhi Lagao
dev said
begin new world with c | c++ | c sharp | data structure | more
with code
dev said
adwaasd
Sunil said
A great article on ‘Infix to Postfix Conversion’ with Visuals and Examples at the below link:
http://www.rawkam.com/?p=762
ognub said
What the fuck is tis? loosing my time. so many errors..
run it before publishing next tym……….
jemalyn gabing said
pwede bang malaman ung code sa tc++ using goto
prapti said
I can’t understand this
Anand said
Ha ha very useful program
jenefer said
Y0u IDIOT
What the hell is this
your program is useless & has incomplete expressions
Run it & then publish otherwise take it & go to HELL
Vinod said
There are some encoding problems.. I specified the solution in the blog title. BTW i tested it properly and then published it.
rakie said
inta pedda program et;la nerchukuntaru ra
soli said
Hi:
i have a project same as what you did , i have a problem to complile.can you help me?
soli said
i copy this code and try to run it but it’s not working.
minal said
i hate programing:(
MJ said
do you have this program in C?
iLLuSioN said
wooow man…. simple errors. THIS WORKS.
CHANGE ALL THE SINGLE QUOTES, MAYBE THE SITE F*ED THEM UP. PUT NEW ONES.
AND PUT top– where the programmer had put only top- (2 occurrences in total).
Anyone who’ve tried making this once could do it easily after reading this one.
deal said
i dt understand the part where u said replace top- with top- or put top
Veec said
//infix[l+1]=”;
what is the above line all about?? why isit infix equals to ” symbol??
soma wahyu said
i found error same with you
while(next!=”)
alab said
me too! What to do to rectify this error?
anggaconstantine said
thats single quote ‘
and type it ‘ and space and then type single quote again ‘
so you type …
while(next!=’ ‘)
i hope thats usefull
Mohammad NMohammad said
Thank you for this code I have it as homework
Prince said
What d hell u r mr…
Prince said
Who is this fu..er
all people who say that this is a good work are mo..er fu..er
go to hell u all si..er fu..er
who fu..er says that this fucker done a great job
first know progran n coding then try to upload such a copy code
else insert fingets in ur asssss
go to hell u all who appreciate this fuck code…
NOLSKEEE said
this code sucks!
this is just our assignment..
HVB said
I executed the program and got 25 errors… why the hell this program is uploaded on net
muneeb said
yar very good job
an efficient program
those who are saying that there are errors
these errors are only the symbolic errors
ali said
For The Best Code and Solution to all other Problems Visit:
http://pakk-hungama.blogspot.com
Mishi said
Yes this site is Really awsome. do visit. Wonderfullllll..Thanx Ali
http://pakk-hungama.blogspot.com
July said
Thanx Ali. it Help me Alot.
Syed said
If you want c++ code for conversion of Infix to Postfix an evaluation contact me @ gousekaleemuddin.syed@gmail.com
sambodhi sharma said
i have
Prateek Mathur said
Can we have the same program in C too??
NiNo said
how to write (A+B^C^D)*(C+D) in a postfix expression??
madhav said
code is understandeable but too lengthy can sum one make it bit shorter
noman ahraf said
this program is very useful.thank you brother.
adnan said
where you live noman
ayesha said
it has got 102 errors
i thought it would be all perfect but alas!
Abelfeid hussen said
It is intersting!
sambodhi sharma said
it is nice
no no very nice
keep it up frd’s
sambodhi sharma said
thnx vinod
anggaconstantine said
This program very nice, this is my destiny, thank you very much
niyaz said
no logic is there and prgm is very lengthy,,
madhu said
not running dude
chetan said
very poor
sohail khowaja said
its very complex logic
Zei said
why is my result turns like this
Infix: a+b
Postfix: ab+#$@#$@$
mandana said
thanks for the code. but there is a problem, it closes the window immediately after showing the answer,so i had to add system(“PAUSE”). and noww it shows some character after the answer. can u help me solve this problem plz?