17 - Vectores paralelos


Este concepto se da cuando hay una relación entre las componentes de igual subíndice (misma posición) de un vector y otro.

vectores paralelos

Si tenemos dos vectores de 5 elementos cada uno. En uno se almacenan los nombres de personas en el otro las edades de dichas personas.
Decimos que el vector nombres es paralelo al vector edades si en la componente 0 de cada vector se almacena información relacionada a una persona (Juan - 12 años)
Es decir hay una relación entre cada componente de los dos vectores.

Esta relación la conoce únicamente el programador y se hace para facilitar el desarrollo de algoritmos que procesen los datos almacenados en las estructuras de datos.

Problema 1:

Desarrollar un programa que permita cargar 5 nombres de personas y sus edades respectivas. Luego de realizar la carga por teclado de todos los datos imprimir los nombres de las personas mayores de edad (mayores o iguales a 18 años)

Programa:

Module Module1
    Public Class PruebaVector10

        Private nombres(4) As String
        Private edades(4) As Integer

        Public Sub Cargar()
            Dim f As Integer
            For f = 0 To nombres.GetUpperBound(0)
                Console.Write("Ingrese nombre:")
                nombres(f) = Console.ReadLine()
                Console.Write("Ingrese edad:")
                edades(f) = Console.ReadLine()
            Next
        End Sub

        Public Sub MayoresEdad()
            Console.WriteLine("Personas mayores de edad.")
            Dim f As Integer
            For f = 0 To nombres.GetUpperBound(0)
                If edades(f) >= 18 Then
                    Console.WriteLine(nombres(f))
                End If
            Next
            Console.ReadKey()
        End Sub
    End Class


    Sub Main()
        Dim pv As New PruebaVector10()
        pv.Cargar()
        pv.MayoresEdad()
    End Sub

End Module

Definimos los dos vectores de 5 elementos cada uno:

        Private nombres(4) As String
        Private edades(4) As Integer

Mediante un For procedemos a la carga de los elementos de los vectores, es común realizar la carga en el mismo For para cargar de uno y otro al mismo tiempo:

        Public Sub Cargar()
            Dim f As Integer
            For f = 0 To nombres.GetUpperBound(0)
                Console.Write("Ingrese nombre:")
                nombres(f) = Console.ReadLine()
                Console.Write("Ingrese edad:")
                edades(f) = Console.ReadLine()
            Next
        End Sub

Podemos llamar al método GetUpperBound de cualquiera de los dos vectores, ya que tienen el mismo tamaño.

Para imprimir los nombres de las personas mayores de edad verificamos cada componente del vector de edades, en caso que sea igual o mayor a 18 procedemos a mostrar el elemento de la misma posición del otro vector:

        Public Sub MayoresEdad()
            Console.WriteLine("Personas mayores de edad.")
            Dim f As Integer
            For f = 0 To nombres.GetUpperBound(0)
                If edades(f) >= 18 Then
                    Console.WriteLine(nombres(f))
                End If
            Next
            Console.ReadKey()
        End Sub

Problemas propuestos

  1. Definir dos vectores paralelos de 5 elementos, en uno se almacenan los nombres de productos y en el otro sus precios.
    Permitir ingresar un valor y mostrar todos los nombres de productos que tienen un precio menor al valor ingresado.
  2. En una empresa de 4 empleados se necesita realizar las siguientes operatorias:
    a) Ingresar los nombres de los empleados con sus respectivos sueldos.
    b) Imprimir los nombres de empleados que cobran menos de $2500
    c) Indicar cuántos cobran más de $3500.
    e) Imprimir el importe total que debe tener la empresa para abonar el sueldo a sus empleados.
Solución
Module Module1
    Public Class PruebaVectorParalelo1

        Private nombres(4) As String
        Private precios(4) As Single

        Public Sub Cargar()
            Dim f As Integer
            For f = 0 To nombres.GetUpperBound(0)
                Console.Write("Ingrese el nombre del producto:")
                nombres(f) = Console.ReadLine()
                Console.Write("Ingrese el precio:")
                precios(f) = Console.ReadLine()
            Next
        End Sub

        Public Sub ConsultaProductos()
            Dim valor As Single
            Console.Write("Ingrese un precio de corte:")
            valor = Console.ReadLine()
            Dim f As Integer
            For f = 0 To nombres.GetUpperBound(0)
                If precios(f) < valor Then
                    Console.WriteLine("Producto:" & nombres(f) & " - " & "Precio:" & precios(f))
                End If
            Next
            Console.ReadKey()
        End Sub
    End Class


    Sub Main()
        Dim pvp As New PruebaVectorParalelo1()
        pvp.Cargar()
        pvp.ConsultaProductos()
    End Sub

End Module





Module Module1
    Public Class PruebaVectorParalelo2

        Private empleados(3) As String
        Private sueldos(3) As Single

        Public Sub Cargar()
            Dim f As Integer
            For f = 0 To empleados.GetUpperBound(0)
                Console.Write("Ingrese el nombre del empleado:")
                empleados(f) = Console.ReadLine()
                Console.Write("Ingrese el sueldo de dicho empleado:")
                sueldos(f) = Console.ReadLine()
            Next
        End Sub

        Public Sub EmpleadosMenos2500()
            Console.WriteLine("Listado de empleados que cobran menos de 2500")
            Dim f As Integer
            For f = 0 To empleados.GetUpperBound(0)
                If sueldos(f) < 2500 Then
                    Console.WriteLine(empleados(f))
                End If
            Next
        End Sub

        Public Sub CantidadMas3500()
            Dim cant As Integer = 0
            Dim f As Integer
            For f = 0 To empleados.GetUpperBound(0)
                If sueldos(f) > 3500 Then
                    cant = cant + 1
                End If
            Next
            Console.WriteLine("Cantidad de empleados que cobran más de 3500:" & cant)
        End Sub

        Public Sub GastoEnSueldos()
            Dim suma As Single = 0
            Dim f As Integer
            For f = 0 To empleados.GetUpperBound(0)
                suma = suma + sueldos(f)
            Next
            Console.WriteLine("Gasto total mensual en sueldos:" & suma)
            Console.ReadKey()
        End Sub
    End Class


    Sub Main()
        Dim pv As New PruebaVectorParalelo2()
        pv.Cargar()
        pv.EmpleadosMenos2500()
        pv.CantidadMas3500()
        pv.GastoEnSueldos()
    End Sub

End Module

Retornar