18 - Vectores - Mayor y menor elemento


Es una actividad común la búsqueda del mayor y menor elemento de un vector, lo mismo que su posición.

vector

El mayor elemento es el 820 y se encuentra en la posición nº 2.

Problema 1:

Confeccionar un programa que permita cargar los nombres de 5 operarios y sus sueldos respectivos. Mostrar el sueldo mayor y el nombre del operario.

Programa:

Module Module1
    Public Class PruebaVector11

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

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

        Public Sub MayorSueldo()
            Dim mayor As Single
            Dim pos As Integer
            mayor = sueldos(0)
            pos = 0
            Dim f As Integer
            For f = 1 To nombres.GetUpperBound(0)
                If sueldos(f) > mayor Then
                    mayor = sueldos(f)
                    pos = f
                End If
            Next
            Console.WriteLine("El empleado con sueldo mayor es " & nombres(pos))
            Console.WriteLine("Tiene un sueldo:" & mayor)
            Console.ReadKey()
        End Sub
    End Class


    Sub Main()
        Dim pv As New PruebaVector11()
        pv.Cargar()
        pv.MayorSueldo()
    End Sub

End Module

Definimos los dos vectores paralelos donde almacenaremos los nombres y los sueldos de los operarios:

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

Cargamos sus elementos:

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

Para obtener el mayor sueldo y el nombre del operario realizar los siguientes pasos:
Inicializamos una variable mayor con la primer componente del vector sueldos:

            mayor = sueldos(0)

Inicializamos una variable pos con el valor 0, ya que decimos primeramente que el mayor es la primer componente del vector:

            pos = 0

Recorremos las componentes del vector que faltan analizar, o sea, de la 1 hasta la última:

            For f = 1 To nombres.GetUpperBound(0)

Accedemos a cada componente para controlar si supera lo que tiene la variable mayor:

                If sueldos(f) > mayor Then

En caso de ser verdadera la condición asignamos a la variable mayor este nuevo valor sueldos[f]

                    mayor = sueldos(f)

y a la variable pos le cargamos la variable f que indica la componente que estamos analizando:

                    pos = f

Cuando salimos de la estructura repetitiva imprimimos la variable mayor que contiene el mayor sueldo y para imprimir el nombre del operario conociendo la posición del mayor sueldo imprimimos el elemento que ocupa la posición que indica la variable pos en el vector paralelo:

            Console.WriteLine("El empleado con sueldo mayor es " & nombres(pos))
            Console.WriteLine("Tiene un sueldo:" & mayor)

Problema propuesto

  1. Cargar un vector de n elementos (n se carga por teclado). imprimir el menor y un mensaje si se repite dentro del vector.
Solución
Module Module1
    Public Class PruebaVector12

        Private vec() As Integer
        Private menor As Integer

        Public Sub Cargar()
            Dim n As Integer
            Console.Write("Cuantos elementos desea cargar:")
            n = Console.ReadLine()
            ReDim vec(n - 1)
            Dim f As Integer
            For f = 0 To vec.GetUpperBound(0)
                Console.Write("Ingrese componente:")
                vec(f) = Console.ReadLine()
            Next
        End Sub

        Public Sub MenorElemento()
            menor = vec(0)
            Dim f As Integer
            For f = 1 To vec.GetUpperBound(0)
                If vec(f) < menor Then
                    menor = vec(f)
                End If
            Next
            Console.WriteLine("El elemento menor es:" & menor)
        End Sub

        Public Sub RepiteMenor()
            Dim cant As Integer = 0
            Dim f As Integer
            For f = 0 To vec.GetUpperBound(0)
                If vec(f) = menor Then
                    cant = cant + 1
                End If
            Next
            If cant > 1 Then
                Console.WriteLine("Se repite el menor en el vector.")
            Else
                Console.WriteLine("No se repite el menor en el vector.")
            End If
            Console.ReadKey()
        End Sub
    End Class


    Sub Main()
        Dim pv As New PruebaVector12()
        pv.Cargar()
        pv.MenorElemento()
        pv.RepiteMenor()
    End Sub

End Module

Retornar