#include <iostream.h> #include <string.h> #include <ctype.h> const int MAX = 50 ; class infix { private : char target[MAX], stack[MAX] ; char *s, *t ; int top ; public : infix( ) ; void setexpr ( char *str ) ; void push ( char c ) ; char pop( ) ; void convert( ) ; int priority ( char c ) ; void show( ) ; } ; infix :: infix( ) { top = -1 ; strcpy ( target, "" ) ; strcpy ( stack, "" ) ; t = target ; s = "" ; } void infix :: setexpr ( char *str ) { s = str ; } void infix :: push ( char c ) { if ( top == MAX ) cout << "\nStack is full\n" ; else { top++ ; stack[top] = c ; } } char infix :: pop( ) { if ( top == -1 ) { cout << "\nStack is empty\n" ; return -1 ; } else { char item = stack[top] ; top-- ; return item ; } } void infix :: convert( ) { while ( *s ) { if ( *s == ' ' || *s == '\t' ) { s++ ; continue ; } if ( isdigit ( *s ) || isalpha ( *s ) ) { while ( isdigit ( *s ) || isalpha ( *s ) ) { *t = *s ; s++ ; t++ ; } } if ( *s == '(' ) { push ( *s ) ; s++ ; } char opr ; if ( *s == '*' || *s == '+' || *s == '/' || *s == '%' || *s == '-' || *s == '$' ) { if ( top != -1 ) { opr = pop( ) ; while ( priority ( opr ) >= priority ( *s ) ) { *t = opr ; t++ ; opr = pop( ) ; } push ( opr ) ; push ( *s ) ; } else push ( *s ) ; s++ ; } if ( *s == ')' ) { opr = pop( ) ; while ( ( opr ) != '(' ) { *t = opr ; t++ ; opr = pop( ) ; } s++ ; } } while ( top != -1 ) { char opr = pop( ) ; *t = opr ; t++ ; } *t = '\0' ; } int infix :: priority ( char c ) { if ( c == '$' ) return 3 ; if ( c == '*' || c == '/' || c == '%' ) return 2 ; else { if ( c == '+' || c == '-' ) return 1 ; else return 0 ; } } void infix :: show( ) { cout << target ; } void main( ) { char expr[MAX] ; infix q ; cout << "\nEnter an expression in infix form: " ; cin.getline ( expr, MAX ) ; q.setexpr ( expr ) ; q.convert( ) ; cout << "\nThe postfix expression is: " ; q.show( ) ; } |
ADB commands for Android
Android
What are C Tokens?
C/C++
Least Recently Used Paging Algorithm
Advanced programs
First In First Out Page Replacement Algorithm
Simple programs
Java Program to find the IP address of the Machine
Basic Programs
Palindrome checking using function overloading
Advanced programs
thanks your program is some how complicated! but let me have enough time to look on it. My hope i wi’ll undarstand it.
wow i innerstand tnks dear f
i got an error saying
[Build error]Error 1 on line 137.. can you please clarify this for me.. thnx a lot.. :))
im just a newbie
Thanks..its working for both characters and numbers…:)
xcellent work!
but program code could be reduced!
( and ) operator’s nt thr … plz upload complete code
what about ^ power symbol? it has the highest priority say 4 in this code.
nothing in being stored in targert[], how it is working ???
Ap ko comment k sath isko explain b krna chahye tha.. is my isdigit or isalpha kya hai???