Professional Documents
Culture Documents
ENCRIPTACIÓN
2. VENTANA DE PROPIEDADES
#pragma once
#include "Pilas.h"
class Operaciones
{
public:
void Push(Pilas &, char);
char Pop(Pilas &);
char Top(Pilas);
bool Vacio(Pilas);
//Postfix a Infix
char Evaluar(char);
void Cambio1(Pilas &, char, char);
void Cambio2(Pilas &, char, char);
void Cambio3(Pilas &, char[], char, int);
void Cambio4(Pilas &, char[], char, int);
//Infix a Prefix
int Prior(char, int);
Operaciones()
{
}
};
{
Op1[z] = Pop(P);
z++;
if (Top(P) == ')') CI++;
if (Top(P) == '(') CF++;
}
Op1[z] = Pop(P);
Push(P, '(');
for (int i = z; i >= 0; i--)
Push(P, Op1[i]);
Push(P, operador);
for (int i = tam; i >= 0; i--)
Push(P, Op2[i]);
Push(P, ')');
}
#pragma once
#include "Operaciones.h"
Botón: btnConvertir:
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
Pilas P, Aux;
P.tamaño = 50;
P.top = -1;
for (int i = 0; i < P.tamaño; i++)
P.datos[i] = ' ';
Aux.tamaño = 50;
Aux.top = -1;
for (int i = 0; i < Aux.tamaño; i++)
Aux.datos[i] = ' ';
Operaciones op;
int longitud = TxtPOSTFIX->Text->Length;
String^ Cadena = TxtPOSTFIX->Text;
char Cad[100];
for (int i = 0; i < longitud; i++)
Cad[i] = Convert::ToChar(Cadena->Substring(i, 1));
//En la pila
int x = 0;
while (x < longitud)
{
char elemento = Cad[x];
if (op.Evaluar(elemento) == 'n')
{
op.Push(P, elemento);
}
if (op.Evaluar(elemento) == 'r')
{
if (op.Top(P) != ')')
{
char Op2 = op.Pop(P);
if (op.Top(P) != ')')
op.Cambio1(P, elemento, Op2);
else
op.Cambio2(P, elemento, Op2);
}
else
{
char Op2[100];
int tam = 0, CI = 1, CF = 0;
while (CI != CF)
{
Op2[tam] = op.Pop(P);
tam++;
if (op.Top(P) == ')') CI++;
if (op.Top(P) == '(') CF++;
}
Op2[tam] = op.Pop(P);
if (op.Top(P) != ')')
op.Cambio3(P, Op2, elemento, tam);
else
op.Cambio4(P, Op2, elemento, tam);
}
}
x++;
}
String^ Linea = "";
while (!op.Vacio(P))
op.Push(Aux, op.Pop(P));
while (!op.Vacio(Aux))
Linea += Char::ToString(op.Pop(Aux));
//CONVIRTIENDO A PREFIJA