Thursday 16 June 2011

uva 727-prefix post fix

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include<cstdio>
#include<stack>
#include<stdlib.h>
#include<ctype.h>
using namespace std;

stack<char>S;
char Sym[] = "()[]{}";

void Cal(char ch)
{
        int i;
        if(isdigit(ch))
        {
                printf("%c",ch);
                return;
        }
        if(ch == '(' || ch == '[' || ch == '{')
        {
                S.push(ch);
                return;
        }
        if(ch == ')' || ch == ']' || ch == '}')
        {
                for(i = 1; Sym[i] !=ch; i+=2);
                while(S.top() != Sym[i-1])
                {
                        printf("%c",S.top());
                        S.pop();
                }
                S.pop();
                return;
        }
        if(ch == '+' || ch == '-')
        {
                while(S.top() =='+'||S.top() =='-'||S.top() =='*'||S.top() =='/')
                {
                        printf("%c",S.top());
                        S.pop();
                }
                S.push(ch);
        }
        if(ch == '*' || ch == '/')
        {
                while(S.top() =='*'||S.top() =='/')
                {
                        printf("%c",S.top());
                        S.pop();
                }
                S.push(ch);
        }
}

int main()
{
        char temp[100];
        int kase,i;
        //freopen("in.txt","r",stdin);
        gets(temp);
        kase = atoi(temp);
        gets(temp);
        while(kase--)
        {
                S.push('(');
                while(gets(temp))
                {
                    for(i=0;temp[i];i++)
                    {
                        if(temp[i]=='\n')
                        {
                            temp[i]=NULL;
                            break;
                        }
                    }
                    if(strlen(temp)==0)
                        break;
                    Cal(temp[0]);
                }
                Cal(')');
                printf("\n");
                if(kase) printf("\n");
        }
        return 0;
}

No comments:

Post a Comment