Cuando se tienen vectores paralelos y se ordena uno de ellos hay que tener la precaución de intercambiar los elementos de los vectores paralelos.
Confeccionar un programa que permita cargar los nombres de 5 alumnos y sus notas respectivas. Luego ordenar las notas de mayor a menor. Imprimir las notas y los nombres de los alumnos.
Module Module1
Public Class PruebaVector16
Private nombres(4) As String
Private notas(4) As Integer
Public Sub Cargar()
Console.WriteLine("Carga de nombres y notas")
Dim f As Integer
For f = 0 To nombres.GetUpperBound(0)
Console.Write("Ingese el nombre del alumno:")
nombres(f) = Console.ReadLine()
Console.Write("Ingrese la nota del alumno:")
notas(f) = Console.ReadLine()
Next
End Sub
Public Sub Ordenar()
Dim f, k As Integer
For k = 0 To notas.GetUpperBound(0) - 1
For f = 0 To notas.GetUpperBound(0) - 1 - k
If notas(f) < notas(f + 1) Then
Dim auxnota As Integer
auxnota = notas(f)
notas(f) = notas(f + 1)
notas(f + 1) = auxnota
Dim auxnombre As String
auxnombre = nombres(f)
nombres(f) = nombres(f + 1)
nombres(f + 1) = auxnombre
End If
Next
Next
End Sub
Public Sub Imprimir()
Console.WriteLine("Nombres de alumnos y notas de mayor a menor")
Dim f As Integer
For f = 0 To notas.GetUpperBound(0)
Console.WriteLine(nombres(f) & " - " & notas(f))
Next
Console.ReadKey()
End Sub
End Class
Sub Main()
Dim pv As New PruebaVector16()
pv.Cargar()
pv.Ordenar()
pv.Imprimir()
End Sub
End Module
Definimos los dos vectores de 5 elementos cada uno (comienzan a numerarse a partir de cero las componentes):
Private nombres(4) As String
Private notas(4) As Integer
En el proceso de ordenamiento dentro de los dos for verificamos si debemos intercambiar los elementos del vector notas:
Dim f, k As Integer
For k = 0 To notas.GetUpperBound(0) - 1
For f = 0 To notas.GetUpperBound(0) - 1 - k
If notas(f) < notas(f + 1) Then
En el caso que la nota de la posición 'f' sea menor a de la posición siguiente 'f+1' procedemos a intercambiar las notas:
Dim auxnota As Integer
auxnota = notas(f)
notas(f) = notas(f + 1)
notas(f + 1) = auxnota
y simultáneamente procedemos a intercambiar los elementos del vector paralelo (con esto logramos que los dos vectores continúen siendo vectores paralelos):
Dim auxnombre As String
auxnombre = nombres(f)
nombres(f) = nombres(f + 1)
nombres(f + 1) = auxnombre
Como vemos utilizamos dos auxiliares distintos porque los elementos de los dos vectores son de distinto tipo (Integer y String)
Module Module1
Public Class PruebaVector17
Private paises(4) As String
Private habitantes(4) As Integer
Public Sub Cargar()
Dim f As Integer
Console.WriteLine("Carga de paises y habitantes")
For f = 0 To paises.GetUpperBound(0)
Console.Write("Ingese el nombre del pais:")
paises(f) = Console.ReadLine()
Console.Write("Ingrese la cantidad de habitantes:")
habitantes(f) = Console.ReadLine()
Next
End Sub
Public Sub OrdenarPorNombres()
Dim f, k As Integer
For k = 0 To paises.GetUpperBound(0) - 1
For f = 0 To paises.GetUpperBound(0) - 1 - k
If paises(f) > paises(f + 1) Then
Dim auxpais As String
auxpais = paises(f)
paises(f) = paises(f + 1)
paises(f + 1) = auxpais
Dim auxhabitante As Integer
auxhabitante = habitantes(f)
habitantes(f) = habitantes(f + 1)
habitantes(f + 1) = auxhabitante
End If
Next
Next
End Sub
Public Sub OrdenarPorHabitantes()
Dim f, k As Integer
For k = 0 To paises.GetUpperBound(0) - 1
For f = 0 To paises.GetUpperBound(0) - 1 - k
If habitantes(f) < habitantes(f + 1) Then
Dim auxpais As String
auxpais = paises(f)
paises(f) = paises(f + 1)
paises(f + 1) = auxpais
Dim auxhabitante As Integer
auxhabitante = habitantes(f)
habitantes(f) = habitantes(f + 1)
habitantes(f + 1) = auxhabitante
End If
Next
Next
End Sub
Public Sub Imprimir()
Dim f As Integer
For f = 0 To paises.GetUpperBound(0)
Console.WriteLine(paises(f) & " - " & habitantes(f))
Next
End Sub
End Class
Sub Main()
Dim pv As New PruebaVector17()
pv.Cargar()
pv.OrdenarPorNombres()
Console.WriteLine("Ordenados alfabéticamente")
pv.Imprimir()
pv.OrdenarPorHabitantes()
Console.WriteLine("Ordenados por cantidad de habitnates")
pv.Imprimir()
Console.ReadKey()
End Sub
End Module