Notación Polish inversa de pila de cola Ejercicio VB.Net - Curso de Programación Visual Basic

 Ejercicio

Notación Polish inversa de pila de cola

Objetivo

Cree un programa que lea desde un archivo de texto una expresión en notación polaca inversa como, por ejemplo:

3 4 6 5 - + * 6 +
(Resultado 21)

Cada elemento se almacenará en una cola.

Una vez que la cola tenga todos los elementos almacenados, tendrá que almacenarlos de la cola a una pila (utilizando la clase Queue y Stack proporcionadas en Visual Basic).

Finalmente, operarás con la pila para obtener el resultado correcto de la expresión en RPN, y la mostrarás por consola.

Código

Imports System
Imports System.Collections.Generic
Imports System.IO
Imports System.Collections
Namespace FileTextQueue
    Class Program
        Private Shared Sub Main(ByVal args As String())
            Console.Write("Introduce el nombre del archivo: ")
            Dim nombreFichero As String = Console.ReadLine()

            If Not File.Exists(nombreFichero) Then
                Console.Write("El archivo no existe")
                Return
            End If

            Try
                Dim depurando As Boolean = True
                Dim ficheroTexto As StreamReader
                ficheroTexto = File.OpenText(nombreFichero)
                Dim line As String = " "
                Dim micola As Queue = New Queue()

                Do
                    line = ficheroTexto.ReadLine()
                    If line IsNot Nothing Then micola.Enqueue(line)
                Loop While line IsNot Nothing

                ficheroTexto.Close()
                Dim miPila As Stack = New Stack()
                Dim numero1 As Integer = 0, numero2 As Integer = 0
                Dim cantidadCola As Integer = micola.Count
                Dim valorCola As String
                Dim valores_linea As String()

                For i As Integer = 0 To cantidadCola - 1
                    valorCola = CStr(micola.Dequeue())
                    valores_linea = valorCola.Split(" "c)

                    For c As Integer = 0 To valores_linea.Length - 1

                        Select Case valores_linea(c)
                            Case "+"
                                numero1 = Convert.ToInt32(miPila.Pop())
                                numero2 = Convert.ToInt32(miPila.Pop())
                                miPila.Push(numero2 + numero1)
                            Case "-"
                                numero1 = Convert.ToInt32(miPila.Pop())
                                numero2 = Convert.ToInt32(miPila.Pop())
                                miPila.Push(numero2 - numero1)
                            Case "*"
                                numero1 = Convert.ToInt32(miPila.Pop())
                                numero2 = Convert.ToInt32(miPila.Pop())
                                miPila.Push(numero2 * numero1)
                            Case "/"
                                numero1 = Convert.ToInt32(miPila.Pop())
                                numero2 = Convert.ToInt32(miPila.Pop())
                                miPila.Push(numero2 / numero1)
                            Case Else
                                miPila.Push(valores_linea(c))
                        End Select
                    Next

                    For j As Integer = 0 To miPila.Count - 1
                        Console.WriteLine(miPila.Pop())
                    Next
                Next

                If depurando Then Console.ReadLine()
            Catch e As Exception
                Console.WriteLine("Error, " & e.Message)
            End Try
        End Sub
    End Class
End Namespace

Más ejercicios Visual Basic (VB.Net) de Gestión Dinámica de Memoria

 Implementación de una cola usando una matriz
Implementación de una cola...
 Implementar una pila usando una matriz
Implementar una pila...
 Colecciones de colas
Cree una cola de cadenas, utilizando la clase Queue que ya existe en la plataforma DotNet. Una vez creado, muestra todos los elementos almacenados ...
 ArrayList
Cree una lista de cadenas utilizando la clase ArrayList que ya existe en la plataforma DotNet. Una vez creado, muestra todos los elementos almacena...
 ArrayList duplicar un archivo de texto
Cree un programa que lea desde un archivo de texto y lo almacene en otro archivo de texto invirtiendo las líneas. Por lo tanto, un archivo de texto...
 Suma ilimitada
Cree un programa para permitir que el usuario ingrese una cantidad ilimitada de números. Además, pueden ingresar los siguientes comandos: "suma", par...
 ArrayList - Lector de archivos de texto
Entregue aquí su lector básico de archivos de texto. Este lector de archivos de texto siempre muestra 21 líneas del archivo de texto, y el usuario ...
 Hast Table - Diccionario
Entregue aquí su diccionario usando Hash Table...
 Paréntesis
Implementar una función para comprobar si una secuencia de paréntesis abierto y cerrado está equilibrada, es decir, si cada paréntesis abierto corresp...
 Mezclar y ordenar archivos
Cree un programa para leer el contenido de dos archivos diferentes y mostrarlo mezclado y ordenado alfabéticamente. Por ejemplo, si los archivos conti...
 ArrayList de puntos
Cree una estructura "Point3D", para representar un punto en el espacio 3-D, con coordenadas X, Y y Z. Cree un programa con un menú, en el que el us...
 Buscar en archivo
Cree un programa para leer un archivo de texto y pida al usuario oraciones para buscar en él. Leerá todo el archivo, lo almacenará en un ArrayList,...

Juan A. Ripoll - Tutoriales de Sistemas y Cursos de Programación© 2024 Todos los derechos reservados.  Condiciones legales.