Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ESTRUCTURA DE DATOS
2. VENTANA DE PROPIEDADES
OBJETO
textBox1
PROPIEDAD
Text
Name
VALOR
<En Blanco>
textINFIX
buttom1
Text
Name
&CONVERTIR
btnCONVERTIR
textBox2
Text
Name
<En Blanco>
textPOSTFIX
buttom2
Text
Name
&NUEVO
btnNUEVO
buttom3
Text
Name
&SALIR
btnSALIR
ESTRUCTURA DE DATOS
Pgina 2
ESTRUCTURA DE DATOS
Pgina 3
class Pila
{
public:
int tamano;
int top;
char datos[50];
public:
Pila(void)
{
}
};
3.2 CREACIN DE LA CLASE PROCESO: MiPila
Pgina 4
ESTRUCTURA DE DATOS
#pragma once
#include "Pila.h"
class MiPila
{
public:
void Push(Pila &, char);
char Pop(Pila &);
char Top(Pila);
char Evaluar(char);
int Prior(char, int);
MiPila(void)
{
}
};
void MiPila::Push(Pila &P, char xdato)
{
if(P.tamano>P.top)
{
P.top++;
P.datos[P.top]=xdato;
}
}
char MiPila::Pop(Pila &P)
{
char wdato=' ';
if(P.top > -1)
{
wdato=P.datos[P.top];
P.top--;
}
return(wdato);
}
char MiPila::Top(Pila P)
{
char wdato= ' ';
if(P.top > -1)
wdato=P.datos[P.top];
return(wdato);
}
char MiPila::Evaluar(char elemento)
{
if(elemento=='^'||elemento=='*'||elemento=='/'||elemento=='+'||elemento=='-')
return('r');
if(elemento=='('||elemento==')')
return(elemento);
else
return('n');
}
int MiPila::Prior(char simbolo, int n)
{
if(simbolo=='^')
Dr. Luis Boy Chavil
ESTRUCTURA DE DATOS
Pgina 5
return(3);
if(simbolo=='*'||simbolo=='/')
return(2);
if(simbolo=='+'||simbolo=='-')
return(1);
if(simbolo==')'||simbolo=='#')
return(0);
if(simbolo=='('&&n==1)
return(4);
if(simbolo=='('&&n==2)
return(0);
}
Pila P;
P.tamano=50;
P.top=-1;
for(int k=0; k<50; k++)
P.datos[k]=' ';
MiPila PILA;
PILA.Push(P, '#');
int longitud=textINFIX->Text->Length;
char INFIX[50], POSTFIX[50];
for(int k=0; k<50; k++)
INFIX[k]=' ';
String^ Infija = textINFIX->Text;
for(int k=0; k<longitud; k++)
{
INFIX[k]=Convert::ToChar(Infija->Substring(k,1));
}
int m=0, z=0;
while(m<longitud)
{
char elemento=INFIX[m];
if(PILA.Evaluar(elemento)=='n')
{
POSTFIX[z]=elemento;
z++;
}
if((PILA.Evaluar(elemento)=='r')||(PILA.Evaluar(elemento)=='('))
{
while(PILA.Prior(elemento,1)<PILA.Prior(PILA.Top(P),2))
{
POSTFIX[z]=PILA.Pop(P);
z++;
}
PILA.Push(P, elemento);
ESTRUCTURA DE DATOS
Pgina 6
}
if(PILA.Evaluar(elemento)==')')
{
while(PILA.Top(P)!='(')
{
POSTFIX[z]=PILA.Pop(P);
z++;
}
char xx=PILA.Pop(P);
}
m++;
}
while(PILA.Top(P)!='#')
{
POSTFIX[z]=PILA.Pop(P);
z++;
}
// Pasando el array de Postfix a la caja de texto
textPOSTFIX->Text="";
String^ Postfija="";
for(int w=0; w<longitud; w++)
Postfija+=Char::ToString(POSTFIX[w]);
textPOSTFIX->Text = Postfija;
}
};
}
NOTA IMPORTANTE
No olvidar que se debe incluir la clase MiPila al inicio del cdigo para poder
utilizarla, de la siguiente manera:
#include MiPila.h