Dependiendo de la complejidad del problema podemos necesitar el empleo de vectores y matrices paralelos.
Se tiene la siguiente información:
· Nombres de 4 empleados.
· Ingresos en concepto de sueldo, cobrado por cada empleado, en los últimos 3 meses.
Confeccionar un programa para:
a) Realizar la carga de la información mencionada.
b) Generar un vector que contenga el ingreso acumulado en sueldos en los últimos 3 meses para cada empleado.
c) Mostrar por pantalla el total pagado en sueldos a todos los empleados en los últimos 3 meses
d) Obtener el nombre del empleado que tuvo el mayor ingreso acumulado
Module Module1 Public Class Matriz9 Private empleados(3) As String Private sueldos(3, 2) As Integer Private sueldostot(3) As Integer Public Sub Cargar() Dim f, c As Integer For f = 0 To empleados.GetUpperBound(0) Console.Write("Ingrese el nombre del empleado:") empleados(f) = Console.ReadLine() For c = 0 To sueldos.GetUpperBound(1) Console.Write("Ingrese sueldo:") sueldos(f, c) = Console.ReadLine() Next Next End Sub Public Sub CalcularSumaSueldos() Dim f, c As Integer For f = 0 To sueldos.GetUpperBound(0) Dim suma As Integer = 0 For c = 0 To sueldos.GetUpperBound(1) suma = suma + sueldos(f, c) Next sueldostot(f) = suma Next End Sub Public Sub ImprimirTotalPagado() Console.WriteLine("Total de sueldos pagados por empleado.") Dim f As Integer For f = 0 To sueldos.GetUpperBound(0) Console.WriteLine(empleados(f) & " - " & sueldostot(f)) Next End Sub Public Sub EmpleadoMayorSueldo() Dim may As Integer = sueldostot(0) Dim nom As String = empleados(0) Dim f As Integer For f = 0 To sueldostot.GetUpperBound(0) If sueldostot(f) > may Then may = sueldostot(f) nom = empleados(f) End If Next Console.WriteLine("El empleado con mayor sueldo es " & nom & " que cobró en los últimos 3 meses " & may) End Sub End Class Sub Main() Dim ma As New Matriz9() ma.Cargar() ma.CalcularSumaSueldos() ma.ImprimirTotalPagado() ma.EmpleadoMayorSueldo() Console.ReadKey() End Sub End Module
Para resolver este problema lo primero que hacemos es definir una matriz donde se almacenarán los sueldos mensuales de cada empleado, un vector de tipo String donde almacenaremos los nombre de cada empleado y finalmente definimos un vector paralelo a la matriz donde almacenaremos la suma de cada fila de la matriz:
Private empleados(3) As String Private sueldos(3, 2) As Integer Private sueldostot(3) As Integer
En el método de cargar inicializamos el vector con los nombres de los empleados y la matriz paralela donde se almacenan los últimos tres sueldos :
Public Sub Cargar() Dim f, c As Integer For f = 0 To empleados.GetUpperBound(0) Console.Write("Ingrese el nombre del empleado:") empleados(f) = Console.ReadLine() For c = 0 To sueldos.GetUpperBound(1) Console.Write("Ingrese sueldo:") sueldos(f, c) = Console.ReadLine() Next Next End Sub
El método sumar sueldos almacenamos en otro vector la suma de cada fila de la matriz. Mediante dos for recorremos toda la matriz y sumamos cada fila:
Public Sub CalcularSumaSueldos() Dim f, c As Integer For f = 0 To sueldos.GetUpperBound(0) Dim suma As Integer = 0 For c = 0 To sueldos.GetUpperBound(1) suma = suma + sueldos(f, c) Next sueldostot(f) = suma Next End Sub
El método ImprimirTotalPagado tiene por objetivo mostrar los dos vectores (el de nombre de los empleados y el que almacena la suma de cada fila de la matriz):
Public Sub ImprimirTotalPagado() Console.WriteLine("Total de sueldos pagados por empleado.") Dim f As Integer For f = 0 To sueldos.GetUpperBound(0) Console.WriteLine(empleados(f) & " - " & sueldostot(f)) Next End Sub
Por último para obtener el nombre del empleado con mayor sueldo acumulado debemos inicializar dos variables auxiliares con el primer elemento del vector de empleados y en otra auxiliar guardamos la primer componente del vector sueldostot:
Public Sub EmpleadoMayorSueldo() Dim may As Integer = sueldostot(0) Dim nom As String = empleados(0) Dim f As Integer For f = 0 To sueldostot.GetUpperBound(0) If sueldostot(f) > may Then may = sueldostot(f) nom = empleados(f) End If Next Console.WriteLine("El empleado con mayor sueldo es " & nom & " que cobró en los últimos 3 meses " & may) End Sub
Module Module1 Public Class Matriz10 Private paises(3) As String Private tempmen(3, 2) As Integer Private temptri(3) As Integer Public Sub Cargar() Dim f, c As Integer For f = 0 To paises.GetUpperBound(0) Console.Write("Ingrese el nombre del país:") paises(f) = Console.ReadLine() For c = 0 To tempmen.GetUpperBound(1) Console.Write("Ingrese temperatura mensual:") tempmen(f, c) = Console.ReadLine() Next Next End Sub Public Sub ImprimirTempMensuales() Dim f, c As Integer For f = 0 To paises.GetUpperBound(0) Console.Write("Pais:" & paises(f) & ":") For c = 0 To tempmen.GetUpperBound(1) Console.Write(tempmen(f, c) & " ") Next Console.WriteLine() Next End Sub Public Sub CalcularTemperaturaTri() Dim f, c As Integer For f = 0 To tempmen.GetUpperBound(0) Dim suma As Integer = 0 For c = 0 To tempmen.GetUpperBound(1) suma = suma + tempmen(f, c) temptri(f) = suma / 3 Next Next End Sub Public Sub ImprimirTempTrimestrales() Console.WriteLine("Temperaturas trimestrales.") Dim f, c As Integer For f = 0 To paises.GetUpperBound(0) Console.WriteLine(paises(f) & " " & temptri(f)) Next End Sub Public Sub PaisMayorTemperaturaTri() Dim may As Integer = temptri(0) Dim nom As String = paises(0) Dim f As Integer For f = 0 To paises.GetUpperBound(0) If temptri(f) > may Then may = temptri(f) nom = paises(f) End If Next Console.WriteLine("Pais con temperatura trimestral mayor es " & nom & " que tiene una temperatura de " & may) End Sub End Class Sub Main() Dim ma As New Matriz10() ma.Cargar() ma.ImprimirTempMensuales() ma.CalcularTemperaturaTri() ma.ImprimirTempTrimestrales() ma.PaisMayorTemperaturaTri() Console.ReadKey() End Sub End Module