#include <iostream.h> #include <stdlib.h> #include <math.h> #include <ctype.h> const int MAX = 50 ; class postfix { private : int stack[MAX] ; int top, nn ; char *s ; public : postfix( ) ; void setexpr ( char *str ) ; void push ( int item ) ; int pop( ) ; void calculate( ) ; void show( ) ; } ; postfix :: postfix( ) { top = -1 ; } void postfix :: setexpr ( char *str ) { s = str ; } void postfix :: push ( int item ) { if ( top == MAX - 1 ) cout << endl << "Stack is full" ; else { top++ ; stack[top] = item ; } } int postfix :: pop( ) { if ( top == -1 ) { cout << endl << "Stack is empty" ; return NULL ; } int data = stack[top] ; top-- ; return data ; } void postfix :: calculate( ) { int n1, n2, n3 ; while ( *s ) { if ( *s == ' ' || *s == '\t' ) { s++ ; continue ; } if ( isdigit ( *s ) ) { nn = *s - '0' ; push ( nn ) ; } else { n1 = pop( ) ; n2 = pop( ) ; switch ( *s ) { case '+' : n3 = n2 + n1 ; break ; case '-' : n3 = n2 - n1 ; break ; case '/' : n3 = n2 / n1 ; break ; case '*' : n3 = n2 * n1 ; break ; case '%' : n3 = n2 % n1 ; break ; case '$' : n3 = pow ( n2 , n1 ) ; break ; default : cout << "Unknown operator" ; exit ( 1 ) ; } push ( n3 ) ; } s++ ; } } void postfix :: show( ) { nn = pop ( ) ; cout << "Result is: " << nn ; } void main( ) { char expr[MAX] ; cout << "\nEnter postfix expression to be evaluated : " ; cin.getline ( expr, MAX ) ; postfix q ; q.setexpr ( expr ) ; q.calculate( ) ; q.show( ) ; } |
Description :
This is the one stop educational site for all Electronic and Computer students. If you want to learn something new then we are here to help. We work on Microcontroller projects, Basic Electronics, Digital electronics, Computer projects and also in basic c/c++ programs.
#Home #Sitemap #Resources #Terms of Use
Copyright©2012 electrofriends.com All Rights Reserved
Contact:info@electrofriends.com
Very interesting information!Perfect just what I was looking for! Platinum and platinum difference http://fdouglasknight.com/drupal/?q=node/1#comment-434715
very very helpful ….. this is exact what i was looking for thanks to the helping hands!