Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: wesker53 en 26 de Noviembre 2015, 08:54

Título: Multiplicación de matrices o arrays o arreglos bidimensionales en Visual Basic
Publicado por: wesker53 en 26 de Noviembre 2015, 08:54
Hago una aplicacion para multiplicar matrices. Me estoy valiendo de arreglos y ciclos anidados. Aqui abajo tengo lo que creo es el codigo. ¿Me pueden decir si está bien o si este código iría en el botón que me genere el producto de matrices, o sea, en el boton "Multiplicar matrices"?

Código: [Seleccionar]
'este sub es para probar la funcion
Private Sub Prueba_de_producto()
Dim A(,) As Decimal = {{1, 2, 3}, {3, 2, 1}}
Dim B(,) As Decimal = {{1, 2}, {3, 1}, {2, 1}}
 
Dim R(,) As Decimal = Producto(A, B)
 
MessageBox.Show(String.Format("{0} {1}" _
& ControlChars.CrLf & "{2} {3}", _
R(0, 0), R(0, 1), R(1, 0), R(1, 1)))
 
End Sub

'funcion de multiplicacion matricial
Public Function Producto(ByVal A(,) As Decimal, ByVal B(,) As Decimal) As Decimal(,)
 
'Comprobamos que las matrices cumplen los requisitos
If A.GetUpperBound(1) B.GetUpperBound(0) Then
Exit Function
End If
 
Dim i, j, k As Short
'Creamos la matriz producto
Dim R(A.GetUpperBound(0), B.GetUpperBound(1)) As Decimal
 
Dim T(A.GetUpperBound(1), 1) As Decimal
 
'Los dos primeros bucles For
'sirven para ir visitando
'todas las posiciones de la matriz R
For i = 0 To R.GetUpperBound(0)
For j = 0 To R.GetUpperBound(1)
 
'i contiene el primer índice de R
'se aumente el índice desde cero
'hasta el número de columnas de A,
'que coincide con el de filas de B
For k = 0 To A.GetUpperBound(1)
T(k, 0) = A(i,k)
Next
 
'j contiene el segundo índice de R
'vamos aumentando el índice desde cero
'hasta el número de filas de B,
'que coincide con el de columnas de A
For k = 0 To B.GetUpperBound(0)
T(k, 1) = B(k, j)
Next
 
'Multiplicamos cada pareja del array T
'y vamos acumulando los resultados.
'El resultado final lo colocamos en su posición
'en la matriz producto R
For k = 0 To T.GetUpperBound(0)
R(i, j) += T(k, 0) * T(k, 1)
Next
 
Next
Next
 
Return R
 
End Function
Título: Re:Multiplicación de matrices o arrays o arreglos bidimensionales en Visual Basic
Publicado por: Ogramar en 28 de Noviembre 2015, 14:51
Buenas cuando hagas una consulta indica con qué lenguaje estás trabajando, por lo que veo parece que es Visual Basic ¿es así? ¿cuál es la versión?

El procedimiento Prueba_de_producto lo que parece que hace es definir dos matrices, invocar la función que las multiplica y mostrar el resultado por pantalla.

La función Producto lo que parece que hace es realizar el producto de dos matrices que recibe como parámetros y devolver la matriz resultado (matriz multiplicación de las dos recibidas).

Para disparar el procedimiento Prueba_de_producto lo tendrás que hacer bien al pulsarse un botón o bien al cargar el formulario principal, no sé bien cuál es la duda que tienes  ::)

Si te fallan las bases recomendable seguir este curso: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=37&Itemid=61

Salu2