#include<stdio.h>
int isop(char op)
{
char OP[6] = {'+','-','*','/','(',')'};
int i;
for(i = 0;i <= 5; i++)
{
if(op==OP[i])
{
return 1;
}
}
return 0;
}
int isdigi(char digi)
{
if(digi >= '0' && digi <= '9')
{
return 1;
}
else
{
return 0;
}
}
int isletter(char letter)
{
if(letter >='a' && letter <= 'z')
{
return 1;
}
else if(letter >= 'A' && letter <= 'Z')
{
return 1;
}
return 0;
}
int pre(char op1,char op2)
{
if (op1 == '(')
{
return -1;
}
if(op1 == '+' || op1 == '-')
{
if(op2 =='*' || op2 == '/')
{
return -1;
}
else
{
return 0;
}
}
if(op1 =='*' ||op1 =='/')
{
if(op2 =='+'||op2 == '-')
{
return 1;
}
else
{
return 0;
}
}
}
//void push()
//void pop()
int main()
{
int i;
int stack[101]= {0};
int top = 0;
char lookhead;
lookhead = getchar();
while(lookhead != '#')
{
if(isdigi(lookhead) == 1||isletter (lookhead) ==1)
{
putchar(lookhead);
lookhead = getchar();
continue;
}
else if(isop(lookhead) == 1)
{
if(top == 0)
{
top++;
stack[top] = lookhead;
}
else
{
if(lookhead == '(')
{
top++;
stack[top] = '(';
}
else if(lookhead == ')')
{
for(i = top;stack[i] != '(';i--)
{
putchar(stack[i]);
top--;
}
top --;
}
else if(pre(lookhead,stack[top]) == -1)
{
for(i = top; pre(lookhead,stack[top]) < 1;i--)
{
putchar(stack[i]);
top--;
}
top ++;
stack[top] = lookhead;
}
else
{
top++;
stack[top] = lookhead;
}
}
lookhead = getchar();
continue;
}
else if(lookhead ==' ')
{
lookhead = getchar();
continue;
}
else
{
printf("error");
return 0;
}
}
if(top != 0)
{
for(i=top ; top > 0; i--)
{
if(stack[i] == '(')
{
printf("error");
return 0;
}
putchar(stack[i]);
top --;
}
}
return 0;
}