Como hemos visto para definir y crear la matriz utilizamos la siguiente sintaxis:
Private mat(2, 4) As Integer
Como las matrices son objetos en Visual Basic .Net disponemos de un método llamado GetUpperBound(numero de índice) que le pasamos como parámetro la dimensión y nos retorna el valor de dicha dimensión.
Para la definición de la matriz indicada arriba si accedemos a la primera dimesión con el método GetUpperBound retorna un 2:
Console.WriteLine(mat.GetUpperBound(0))
Si accedemos a la segunda dimesión se imprime un 4:
Console.WriteLine(mat.GetUpperBound(1))
La primer dimensión son la cantidad de filas más uno y la segunda dimensión son la cantidad de columnas más uno de la matriz.
Crear una matriz de n * m filas (cargar n y m por teclado) Imprimir la matriz completa y la última fila.
Module Module1
Public Class Matriz5
Private mat(,) As Integer
Public Sub Cargar()
Dim filas, columnas As Integer
Console.Write("Cuantas fila tiene la matriz:")
filas = Console.ReadLine()
Console.Write("Cuantas columnas tiene la matriz:")
columnas = Console.ReadLine()
ReDim mat(filas - 1, columnas - 1)
Dim f, c As Integer
For f = 0 To mat.GetUpperBound(0)
For c = 0 To mat.GetUpperBound(1)
Console.Write("Ingrese componente:")
mat(f, c) = Console.ReadLine()
Next
Next
End Sub
Public Sub Imprimir()
Dim f, c As Integer
For f = 0 To mat.GetUpperBound(0)
For c = 0 To mat.GetUpperBound(1)
Console.Write(mat(f, c) & " ")
Next
Console.WriteLine()
Next
End Sub
Public Sub ImprimirUltimaFila()
Dim c As Integer
Console.WriteLine("Ultima fila")
For c = 0 To mat.GetUpperBound(1)
Console.Write(mat(mat.GetUpperBound(0), c) & " ")
Next
End Sub
End Class
Sub Main()
Dim ma As New Matriz5()
ma.Cargar()
ma.Imprimir()
ma.ImprimirUltimaFila()
Console.ReadKey()
End Sub
End Module
Declaramos la matriz sin indicar el valor de cada una de las dos dimensiones:
Private mat(,) As Integer
En este ejemplo cada vez que se ejecute el programa el tamaño de la matriz lo define el usuario, para ello ingresamos por teclado dos enteros y seguidamente procedemos a crear la matriz con dichos valores restando uno a filas y columnas:
Dim filas, columnas As Integer
Console.Write("Cuantas fila tiene la matriz:")
filas = Console.ReadLine()
Console.Write("Cuantas columnas tiene la matriz:")
columnas = Console.ReadLine()
ReDim mat(filas - 1, columnas - 1)
Ahora las estructuras repetitivas las acotamos preguntando a la misma matriz la cantidad de filas y la cantidad de columnas:
For f = 0 To mat.GetUpperBound(0)
For c = 0 To mat.GetUpperBound(1)
Console.Write("Ingrese componente:")
mat(f, c) = Console.ReadLine()
Next
Next
El algoritmo de impresión es idéntico al visto anteriormente con la modificación de los For:
Public Sub Imprimir()
Dim f, c As Integer
For f = 0 To mat.GetUpperBound(0)
For c = 0 To mat.GetUpperBound(1)
Console.Write(mat(f, c) & " ")
Next
Console.WriteLine()
Next
End Sub
Para imprimir la última fila debemos disponer un valor fijo en el subíndice de la fila, en este caso no podemos disponer un número fijo sino preguntarle a la misma matriz el valor definido para la primer dimensión.
También el For debemos acotarlo con el segundo índice (columnas):
Public Sub ImprimirUltimaFila()
Dim c As Integer
Console.WriteLine("Ultima fila")
For c = 0 To mat.GetUpperBound(1)
Console.Write(mat(mat.GetUpperBound(0), c) & " ")
Next
End Sub
Crear una matriz de n * m filas (cargar n y m por teclado) Imprimir el mayor elemento y la fila y columna donde se almacena.
Module Module1
Public Class Matriz6
Private mat(,) As Integer
Public Sub Cargar()
Dim filas, columnas As Integer
Console.Write("Cuantas fila tiene la matriz:")
filas = Console.ReadLine()
Console.Write("Cuantas columnas tiene la matriz:")
columnas = Console.ReadLine()
ReDim mat(filas - 1, columnas - 1)
Dim f, c As Integer
For f = 0 To mat.GetUpperBound(0)
For c = 0 To mat.GetUpperBound(1)
Console.Write("Ingrese componente:")
mat(f, c) = Console.ReadLine()
Next
Next
End Sub
Public Sub ImprimirMayor()
Dim mayor As Integer = mat(0, 0)
Dim filamay As Integer = 0
Dim columnamay As Integer = 0
Dim f, c As Integer
For f = 0 To mat.GetUpperBound(0)
For c = 0 To mat.GetUpperBound(1)
If mat(f, c) > mayor Then
mayor = mat(f, c)
filamay = f
columnamay = c
End If
Next
Next
Console.WriteLine("El elemento mayor es:" & mayor)
Console.WriteLine("Se encuentra en la fila:" & filamay & " y en la columna: " & columnamay)
Console.ReadKey()
End Sub
End Class
Sub Main()
Dim ma As New Matriz6()
ma.Cargar()
ma.ImprimirMayor()
End Sub
End Module
Para obtener el mayor elemento de la matriz y la fila y columna donde se ubica debemos inicializar una variable mayor con el elemento de la fila cero y columna cero (esto lo hacemos suponiendo que en dicha posición se almacena el mayor):
Dim mayor As Integer = mat(0, 0)
Dim filamay As Integer = 0
Dim columnamay As Integer = 0
Luego mediante dos for recorremos todos los elementos de la matriz y cada vez que encontramos un elemento mayor al actual procedemos a actualizar la variable mayor y la posición donde se almacena:
For f = 0 To mat.GetUpperBound(0)
For c = 0 To mat.GetUpperBound(1)
If mat(f, c) > mayor Then
mayor = mat(f, c)
filamay = f
columnamay = c
End If
Next
Next
Fuera de los dos For procedemos a mostrar el contenido de la variable mayor y la posición donde se encuentra dentro de la matriz:
Console.WriteLine("El elemento mayor es:" & mayor)
Console.WriteLine("Se encuentra en la fila:" & filamay & " y en la columna: " & columnamay)
Module Module1
Public Class Matriz7
Private mat(,) As Integer
Public Sub Cargar()
Dim filas, columnas As Integer
Console.Write("Cuantas fila tiene la matriz:")
filas = Console.ReadLine()
Console.Write("Cuantas columnas tiene la matriz:")
columnas = Console.ReadLine()
ReDim mat(filas - 1, columnas - 1)
Dim f, c As Integer
For f = 0 To mat.GetUpperBound(0)
For c = 0 To mat.GetUpperBound(1)
Console.Write("Ingrese componente:")
mat(f, c) = Console.ReadLine()
Next
Next
End Sub
Public Sub Intercambiar()
Dim c As Integer
For c = 0 To mat.GetUpperBound(0)
Dim aux As Integer = mat(0, c)
mat(0, c) = mat(1, c)
mat(1, c) = aux
Next
End Sub
Public Sub Imprimir()
Dim f, c As Integer
For f = 0 To mat.GetUpperBound(0)
For c = 0 To mat.GetUpperBound(1)
Console.Write(mat(f, c) & " ")
Next
Console.WriteLine()
Next
Console.ReadKey()
End Sub
End Class
Sub Main()
Dim ma As New Matriz7()
ma.Cargar()
ma.Intercambiar()
ma.Imprimir()
End Sub
End Module
Module Module1
Public Class Matriz8
Private mat(,) As Integer
Public Sub Cargar()
Dim filas, columnas As Integer
Console.Write("Cuantas fila tiene la matriz:")
filas = Console.ReadLine()
Console.Write("Cuantas columnas tiene la matriz:")
columnas = Console.ReadLine()
ReDim mat(filas - 1, columnas - 1)
Dim f, c As Integer
For f = 0 To mat.GetUpperBound(0)
For c = 0 To mat.GetUpperBound(1)
Console.Write("Ingrese componente:")
mat(f, c) = Console.ReadLine()
Next
Next
End Sub
Public Sub ImprimirVertices()
Console.WriteLine("Vértice superior izquierdo:")
Console.WriteLine(mat(0, 0))
Console.WriteLine("Vértice superior derecho:")
Console.WriteLine(mat(0, mat.GetUpperBound(1)))
Console.WriteLine("Vértice inferior izquierdo:")
Console.WriteLine(mat(mat.GetUpperBound(0), 0))
Console.WriteLine("Vértice inferior derecho:")
Console.WriteLine(mat(mat.GetUpperBound(0), mat.GetUpperBound(1)))
Console.ReadKey()
End Sub
End Class
Sub Main()
Dim ma As New Matriz8()
ma.Cargar()
ma.ImprimirVertices()
End Sub
End Module