Queue Stack Reverse Polish Notation VB.Net Exercise - Visual Basic Programming Course


 Exercise

Queue Stack Reverse Polish Notation

Objetive

Create a program that reads a Reverse Polish Notation expression from a text file, for example:

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

Each item will be stored in a queue. Once the queue has all the items stored, you will need to transfer them from the queue to a stack using the Queue and Stack classes provided in Visual Basic (VB.Net).

Finally, you will operate with the stack to get the correct result of the RPN expression and show it on the console.

Code

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

More VB.Net Exercises of Dynamic Memory Management

 Implementing a queue using array
Implementing a queue...
 Implementing a stack using array
Implementing a stack...
 Queue Collections
Create a string queue using the Queue class that already exists in the DotNet platform....
 ArrayList
Create a string list using the ArrayList class that already exists in the .NET platform. Once created, display all the items stored in the list. In...
 ArrayList duplicate a text file
Create a program that reads from a text file and stores it to another text file by reversing the order of lines. For example, an input text file li...
 Unlimited sum
Create a program to allow the user to enter an unlimited amount of numbers. Also, they can enter the following commands: "sum", to display the sum of...
 ArrayList - Text file reader
provide your basic text file reader here, which displays 21 lines of text and allows the user to navigate using the up and down arrow keys, and exit u...
 Hast Table - Dictionary
Submit your dictionary here using a hash table....
 Parenthesis
Implement a function to check if a sequence of open and closed parentheses is balanced. In other words, check if each open parenthesis corresponds to ...
 Mix and sort files
Create a program that reads the contents of two different files, merges them, and sorts them alphabetically. For example, if the files contain: "Dog C...
 ArrayList of Points
Create a structure named "Point3D" to represent a point in 3D space with coordinates X, Y, and Z. Create a program that has a menu where the user c...
 Search in file
Create a program that reads a text file, saves its content to an ArrayList, and asks the user to enter sentences to search within the file. The pro...


Juan A. Ripoll - Systems Tutorials and Programming Courses © 2024 All rights reserved.  Legal Conditions.