Você está na página 1de 2

# include<iostream.

h>
# include<string.h>
# include<conio.h>
void main()
{
clrscr();
char epos[50],pila[50],*ei,sim;
int i=0,top=0,f=0,a,jerarquia,jerarquia1;
gotoxy(5,5);cout<<" Expresion Infija : ";cin>>ei;
a=strlen(ei);
for (i=0;i<a;i++)
{
sim=ei[i];
if (sim!='*' && sim!='/' && sim!='+' && sim!='-' && sim!='^' && sim!='('&& sim!
=')')
{
epos[f]=sim;
f++;
}
if(sim=='(')
{
top++;
pila[top]=sim;
}
if(sim==')')
{
while(pila[top]!='(')
{
epos[f]=pila[top];
f++;
top--;
}
top--;
}
if(sim=='+' || sim=='-' || sim=='*' || sim=='/' || sim=='^')
{
if(top>0)
{
if(sim=='+' || sim=='-')
{
jerarquia=0;
}
if(sim=='*' || sim=='/')
{
jerarquia=1;
}
if(sim=='^')
{
jerarquia=2;
}
if(pila[top]=='+' || pila[top]=='-')
{
jerarquia1=0;
}
if(pila[top]=='*' || pila[top]=='/')
{
jerarquia1=1;
}
if(pila[top]=='^')
{
jerarquia1=2;
}
while(top>0 && pila[top]!='(' && jerarquia<=jerarquia1)
{
epos[f]=pila[top];
f++;
top--;
if(pila[top]=='+' || pila[top]=='-')
{
jerarquia1=0;
}
if(pila[top]=='*' || pila[top]=='/')
{
jerarquia1=1;
}
if(pila[top]=='^')
{
jerarquia1=2;
}
}
top++;
pila[top]=sim;
}
if(top==0 || pila[top]=='(')
{
top++;
pila[top]=sim;
}
}
}
while(top>0)
{
epos[f]=pila[top];
f++;
top--;
}
gotoxy(5,7);cout<<" Expresion Posfija : ";
for(i=0;i<f;i++)
{
cout<<epos[i];
}
getch();
}

Você também pode gostar