jueves, 11 de octubre de 2018

Un Método Algebráico Alternativo de Introducción de Datos: Notación Polaca Inversa

Notación Polaca Inversa Es un método algebraico alternativo de introducción de datos. Su nombre viene por analogía con la relacionada notación polaca, una notación de prefijo introducida en 1920 por el matemático polaco Jan Lukasiewicz, en donde cada operador está antes de sus operandos. 


Yendo a la práctica, "3+2" en Notación Polaca Inversa es "32+", ambos valen 5.
Otro ejemplo más completo, si quiero hacer un algoritmo para convertir una notación del tipo: "(3*2)+2" a otra del tipo "32*2+" en NPI, se hace de la siguiente manera:
Tratemos a cada carácter ingresado como un valor individual, es decir,
el usuario ingresa 3, 
Pila_valores: 3
Usuario ingresa 2,
Pila_valores: 3,2
Usuario ingresa *,
Pila_valores: 6
Usuario ingresa 2,
Pila_valores: 6,2
Usuario ingresa +,
Pila_valores: 8

Pseudocódigo de una función "leer pila en NPI (cadena de carácteres a de 20 posiciones), desde el 0 hasta la última posición utilizada (designada por el caracter 'x'), y devolver la pila resultado".

Declaro array char a[20];



Función:
Recibo array a con los caracteres cargados.
int a,b,c;
DO
--------------
{
   switch(a[i])
   {
      case '+':
            a=(int)a[i-1]; //convierto el char en a posición i-1 a entero
            ASCII NÚMERO 0 ES 48
            ASCII NÚMERO 9 ES 57

            b=(int)a[i-2];
            c=a+b;
            a[i-2]=(int)c;
            break;

      case '-':
            a=(int)a[i-1]; //convierto el char en a posición i-1 a entero
            ASCII NÚMERO 0 ES 48
            ASCII NÚMERO 9 ES 57

            b=(int)a[i-2];
            c=a-b;
            a[i-2]=(int)c;

            break;
   }
}
-------------- Fin Do While
Repito mientras i valor del 0 al 20 y a[i] diferente a 'x';

Devuelvo arreglo modificado;



Ahora, mostraremos otro ejemplo de cómo construir funciones referentes al tema en lenguaje C,






Ignacio Suanes
Clases particulares de programación
WhatsApp al +59897153402

No hay comentarios:

Publicar un comentario