Un arreglo de dos o mas dimensiones es denominado tambien MATRIZ o TABLA. En la practica no es comun trabajar con matrices de de mas de 3 dimensiones, aunque es posible crearlos.
Una matriz bidimensional, esta compuesto por FILAS y COLUMNAS, asi por ejemplo, en la imagen de abajo tenemos una matriz de 5 columnas por 5 filas, donde para hubicar un elemento de esa matriz, se debe especificar ambas dimensiones matriz(fila, columna).
Una matriz se declara al igual que un arreglo unidimensional, pero especificando todas las dimensiones que se deseen, asi por ejemplo, para declarar una matriz HORARIO de tipo STRING, que tendra 7 columnas (dias de la semana) y 24 filas (horas) se tiene:
01 Dim HORARIO(23, 6) As String
Tambien puede declarase una matriz sin rango inicial, esto se utiliza cuando no sabemos de antemano cuantas dimensiones podra tener una matriz, por ejemplo:
01 Dim matriz(,) As Byte
Se declara una matriz de tipo byte, esta está vacia y hasta que no se especifique el rango de las dimensiones, al tratar de utilizar un elemento de esa matriz, este causa una excepcion.
Para declarar las dimensiones una ves creada la matriz, se utiliza la instruccion REDIM:01 ReDim matriz(fila, columna)
Escribir un programa que permita multiplicar dos matrices leidas por teclado y visualizar la matriz resultante.
Solucion: Si las matrices A,B y la matriz resultante es C, se pueden multiplicar si el numero de columnas de la matriz A es igual al numero de filas de la matriz B; entonces la matriz C tiene el numero de filas de la matriz A y el numero de columnas de la matriz B. Los elementos de la matriz C se obtienen a partir de la siguiente ecuacion:
donde:Codigo fuente:
01 Module Module1 02 Const maximo As Byte = 19 03 04 'se crea una estructura tipo matriz con sus propios procedimientos 05 Structure matriz 06 07 Public m(,) As Single 08 09 Public Sub New(ByVal f As Single, ByVal c As Single) 10 ReDim m(f, c) 11 End Sub 12 13 Public Sub introducir(ByVal t As String, ByVal nf As Byte, ByVal nc As Byte) 14 Dim i, j As Byte 15 Console.WriteLine(t) 16 Console.WriteLine("------------------------------------") 17 For i = 0 To nf 18 For j = 0 To nc 19 Console.Write("Matriz[" & i & "," & j & "]= ") 20 m(i, j) = Val(Console.ReadLine) 21 Next 22 Next 23 Console.WriteLine("------------------------------------") 24 End Sub 25 26 Public Sub imprimir(ByVal t As String, ByVal nf As Byte, ByVal nc As Byte) 27 Dim i, j As Byte 28 Console.WriteLine(t) 29 For i = 0 To nf 30 For j = 0 To nc 31 Console.Write(m(i, j) & " ") 32 Next 33 Console.WriteLine() 34 Next 35 Console.WriteLine() 36 End Sub 37 38 End Structure 39 40 Dim A As matriz = New matriz(maximo, maximo) 41 Dim B As matriz = New matriz(maximo, maximo) 42 Dim C As matriz = New matriz(maximo, maximo) 43 44 Sub Main() 45 Dim num As Byte 46 Console.Write("Filas y columnas [i,j] = ") 47 num = Val(Console.ReadLine) - 1 48 49 If num > maximo Then 50 Console.WriteLine("el limite es un maximo de " & maximo & " filas y columnas") 51 Else 52 A.introducir("Matriz A", num, num) 53 B.introducir("Matriz B", num, num) 54 multiplicar(num) 55 Console.Clear() 56 A.imprimir("Matriz A", num, num) 57 B.imprimir("Matriz B", num, num) 58 C.imprimir("Matriz A * B", num, num) 59 End If 60 Console.WriteLine("presione una tecla para terminar...") 61 Console.ReadLine() 62 End Sub 63 64 'procedimiento publico que calcula el producto de dos matrices 65 Public Sub multiplicar(ByVal num As Byte) 66 Dim i, j, k As Byte 67 For i = 0 To num 68 For j = 0 To num 69 For k = 0 To num 70 C.m(i, j) = C.m(i, j) + A.m(i, k) * B.m(k, j) 71 Next 72 Next 73 Next 74 End Sub 75 End Module
En la solucion de este problema, se hace uso de una STRUCTURE (visto en un post anterior) donde se declara la matriz y sus metodos. tambien se especifica como una constante el valor maximo que podra tener una matriz (columnas y filas).
Resultado:
2 comentarios:
gracias si que ayuda y mas eso muy bien explicado
amigo me pudes ayudar con estos ejerccios en modo console de visual,basic.ney
Ingrese 12 números en un arreglo bidimensional (matriz) de 4x3, y
obtenga la suma de cada columna.
Publicar un comentario