#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
char *num;
int top;
}sq;
char a[1000];
char b[1000];
int u=0;
void start(sq &l)
{
l.num=(char *)malloc(1000*sizeof(char));
l.top=0;
}
void push(sq &l,int e)
{
l.num[l.top]=e;
l.top++;
}
void out(sq &l)
{
l.top--;
b[u]=l.num[l.top];
u++;
}
void out2(sq &l)
{
l.top--;
printf("%c",l.num[l.top]);
}
int cmp(char a)
{
if(a=='-'||a=='+')
{
return 1;
}
if(a=='*'||a=='/')
{
return 2;
}
if(a==')')
{
return 3;
}
if(a=='(')
{
return 4;
}
}
void before(sq &l,char a[])
{
u=0;
int n=strlen(a),i;
start(l);
for(i=n-2;i>=0;i--)
{
if(a[i]>='a'&&a[i]<='z')
{
b[u]=a[i];
u++;
}
else
{
if(l.top==0)
{
push(l,a[i]);
}
else
{
if(cmp(a[i])<cmp(l.num[l.top-1]))
{
if(l.num[l.top-1]==')')
{
push(l,a[i]);
}
else
{
out(l);
push(l,a[i]);
}
}
else
{
if(a[i]=='(')
{
while(l.num[l.top-1]!=')')
{
out(l);
}
l.top--;
}
else
{
push(l,a[i]);
}
}
}
}
}
while(l.top!=0)
{
out(l);
}
for(i=u-1;i>=0;i--)
{
printf("%c",b[i]);
}
printf("\n");
}
void mid(char a[])
{
int n=strlen(a),i;
for(i=0;i<n-1;i++)
{
if(a[i]!='('&&a[i]!=')')
{
printf("%c",a[i]);
}
}
printf("\n");
}
void next(sq &l,char a[])
{
int i,j,n,e,m;
start(l);
for(i=0;a[i]!='#';i++)
{
if(a[i]>='a'&&a[i]<='z')
{
printf("%c",a[i]);
}
else
{
if(l.top==0)
{
push(l,a[i]);
}
else
{
if(cmp(a[i])<=cmp(l.num[l.top-1]))
{
if(l.num[l.top-1]=='(')
{
push(l,a[i]);
}
else
{
out2(l);
push(l,a[i]);
}
}
else
{
if(a[i]==')')
{
while(l.num[l.top-1]!='(')
{
out2(l);
}
l.top--;
}
else
{
push(l,a[i]);
}
}
}
}
}
while(l.top!=0)
{
out2(l);
}
printf("\n");
}
int main()
{
sq l;
int i,j,n,e,m;
scanf("%s",a);
before(l,a);
mid(a);
next(l,a);
/*n=strlen(a);
start(l);
for(i=n-2;i>=0;i--)
{
if(a[i]>='a'&&a[i]<='z')
{
b[u]=a[i];
u++;
}
else
{
if(l.top==0)
{
push(l,a[i]);
}
else
{
if(cmp(a[i])<cmp(l.num[l.top-1]))
{
if(l.num[l.top-1]==')')
{
push(l,a[i]);
}
else
{
out(l);
push(l,a[i]);
}
}
else
{
if(a[i]=='(')
{
while(l.num[l.top-1]!=')')
{
out(l);
}
l.top--;
}
else
{
push(l,a[i]);
}
}
}
}
}
while(l.top!=0)
{
out(l);
}
for(i=u-1;i>=0;i--)
{
printf("%c",b[i]);
}*/
return 0;
}
#include <stdlib.h>
#include <string.h>
typedef struct
{
char *num;
int top;
}sq;
char a[1000];
char b[1000];
int u=0;
void start(sq &l)
{
l.num=(char *)malloc(1000*sizeof(char));
l.top=0;
}
void push(sq &l,int e)
{
l.num[l.top]=e;
l.top++;
}
void out(sq &l)
{
l.top--;
b[u]=l.num[l.top];
u++;
}
void out2(sq &l)
{
l.top--;
printf("%c",l.num[l.top]);
}
int cmp(char a)
{
if(a=='-'||a=='+')
{
return 1;
}
if(a=='*'||a=='/')
{
return 2;
}
if(a==')')
{
return 3;
}
if(a=='(')
{
return 4;
}
}
void before(sq &l,char a[])
{
u=0;
int n=strlen(a),i;
start(l);
for(i=n-2;i>=0;i--)
{
if(a[i]>='a'&&a[i]<='z')
{
b[u]=a[i];
u++;
}
else
{
if(l.top==0)
{
push(l,a[i]);
}
else
{
if(cmp(a[i])<cmp(l.num[l.top-1]))
{
if(l.num[l.top-1]==')')
{
push(l,a[i]);
}
else
{
out(l);
push(l,a[i]);
}
}
else
{
if(a[i]=='(')
{
while(l.num[l.top-1]!=')')
{
out(l);
}
l.top--;
}
else
{
push(l,a[i]);
}
}
}
}
}
while(l.top!=0)
{
out(l);
}
for(i=u-1;i>=0;i--)
{
printf("%c",b[i]);
}
printf("\n");
}
void mid(char a[])
{
int n=strlen(a),i;
for(i=0;i<n-1;i++)
{
if(a[i]!='('&&a[i]!=')')
{
printf("%c",a[i]);
}
}
printf("\n");
}
void next(sq &l,char a[])
{
int i,j,n,e,m;
start(l);
for(i=0;a[i]!='#';i++)
{
if(a[i]>='a'&&a[i]<='z')
{
printf("%c",a[i]);
}
else
{
if(l.top==0)
{
push(l,a[i]);
}
else
{
if(cmp(a[i])<=cmp(l.num[l.top-1]))
{
if(l.num[l.top-1]=='(')
{
push(l,a[i]);
}
else
{
out2(l);
push(l,a[i]);
}
}
else
{
if(a[i]==')')
{
while(l.num[l.top-1]!='(')
{
out2(l);
}
l.top--;
}
else
{
push(l,a[i]);
}
}
}
}
}
while(l.top!=0)
{
out2(l);
}
printf("\n");
}
int main()
{
sq l;
int i,j,n,e,m;
scanf("%s",a);
before(l,a);
mid(a);
next(l,a);
/*n=strlen(a);
start(l);
for(i=n-2;i>=0;i--)
{
if(a[i]>='a'&&a[i]<='z')
{
b[u]=a[i];
u++;
}
else
{
if(l.top==0)
{
push(l,a[i]);
}
else
{
if(cmp(a[i])<cmp(l.num[l.top-1]))
{
if(l.num[l.top-1]==')')
{
push(l,a[i]);
}
else
{
out(l);
push(l,a[i]);
}
}
else
{
if(a[i]=='(')
{
while(l.num[l.top-1]!=')')
{
out(l);
}
l.top--;
}
else
{
push(l,a[i]);
}
}
}
}
}
while(l.top!=0)
{
out(l);
}
for(i=u-1;i>=0;i--)
{
printf("%c",b[i]);
}*/
return 0;
}