#include #include #include #include #include #include //Bakhshte Taarif==> #define N 64 #define LP 10 #define RP 20 #define OPERATOR 30 #define OPERAND 40 // Olaviyate Parantez Baz. Kochektar az Hame. #define LPP 0 // Olaviyate Jam Va Tafrigh. Kochekta Dar Tamame Olaviyathaye Operator. #define AP 1 #define SP AP // Olaviyate Zarbe va Taghsim. #define MP 2 #define DP MP // Olaviyate Baghimande. #define REMP 2 //None(Hichi!) #define NONE 9 //Tarife Arayeha==> static char infix[N+1],stack[N],postfix[N+1]; static int top; //Bakhshe Tavabe==> void infixtopostfix(void); //tabe tabdile infix be postfix. int gettype(char); //tabe jenratore bayan! void push(char); //tabe ezafe Be poshte. char pop(void); //tabe hazf az poshte. int getprec(char); //tabe olaviyate jostejogar. //Main==> int main() { cout<<"\t********************************************* \n"; cout<<"\t******[Mobadele InFix Be PostFix {C++}]****** \n"; cout<<"\t************[www.PnuSoftware.tk]************* \n"; cout<<"\t********************************************* \n"; char ch; do { top=-1; cout<<"\t_____________________________________________ \n"; cout<<"\n Ebarate InFix Ra vared Namaeed:\n==> "; fflush(stdin); gets(infix); infixtopostfix(); cout<<"\nEbarate 'InFix' = "< void infixtopostfix(void) { int i,p,l,type,prec; char next; i=p=0; l=strlen(infix); while(i-1 && prec <= getprec(stack[top])) postfix[p++]=pop(); push(infix[i]); break; } i++; } while(top>-1) postfix[p++]=pop(); postfix[p]='\0'; } //payane tabe1 int gettype(char sym) { switch(sym) { case '(': return(LP); case ')': return(RP); case '+': case '-': case '*': case '/': case '%': return(OPERATOR); default : return(OPERAND); } } //payane tabe2 void push(char sym) { if(top>N) { printf("\nStack is full\n"); exit(0); } else stack[++top]=sym; }//payane PUSH char pop(void) { if(top<=-1) { printf("\nStack is empty\n"); exit(0); } else return(stack[top--]); } //payane tabe POP int getprec(char sym) { switch(sym) { case '(': return(LPP); case '+': return(AP); case '-': return(SP); case '*': return(MP); case '/': return(DP); case '%': return(REMP); default : return(NONE); } }//payane tabe Olaviyat