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