Can't Copy and Paste this?

Click here for a copy-and-paste friendly version of this code!

 

//**************************************

//     

//INCLUDE files for :Infix 2 Postfix

//**************************************

//     

#include 

#include 

#include 

#include 

 

code:

Can't Copy and Paste this?

Click here for a copy-and-paste friendly version of this code!

 

Terms of Agreement:   

By using this code, you agree to the following terms...   

1) You may use this code in your own programs (and may compile it into a program and distribute it in compiled format for langauges that allow it) freely and with no charge.   

2) You MAY NOT redistribute this code (for example to a web site) without written permission from the original author. Failure to do so is a violation of copyright laws.   

3) You may link to this code from another website, but ONLY if it is not wrapped in a frame. 

4) You will abide by any additional copyright restrictions which the author may have placed in the code or code's description.  

#include 

#include 

#include 

#include 

#define MAX 50

int Stack[MAX];

int Top = 0;

void push (int x)

    {

    if (Top

    Stack[Top++] = x;

}

int pop (void)

    {

    if (Top>0)

    return Stack[--Top];

    return MAX;

}

void get_infix (char *infix)

    {

    printf("\nEnter infix notation(max:%d\)->", MAX);

    scanf("%s",infix);

}

infix_2_postfix(char *infix, char *postfix)

    {

        while (*infix) {

            switch (*infix) {

            case '+':

            case '*':

            push (*infix);

            break;

            case '(':

            break;

            case ')':

            *postfix = (char) pop();

            postfix++;

            break;

            default:

            *postfix = *infix;

            postfix++;

            break;

        }

        infix++;

    }

        while (Top) {

        *postfix = (char) pop();

        postfix++;

    }

    *postfix = '\0';

}

int eval (char *postfix)

    {

    int ans = 0;

        while (*postfix) {

            switch (*postfix) {

            case '+': ans = (pop()-48) + (pop()-48); push(ans+48);

            break;

            case '*': ans = (pop()-48) * (pop()-48); push(ans+48);

            break;

            default:

            push(*postfix);

            break;

        }

        postfix++;

    }

    return ans;

}

void main(void)

    {

    int i;

    char infix[MAX], postfix[MAX];

    get_infix(infix);

    infix_2_postfix(infix, postfix);

    printf("\n %s%s = %d", infix, postfix, eval(postfix));

}