Problema al multiplicar dos marices
Disculpa mi molestia y antes que nada agradezco tu colaboración para con los usuarios, mi consulta es la siguiente:
Estoy realizando una aplicación que sume, reste y multiplique matrices.
Cuando multiplico matrices de igual dimensiones, es decir 2 x 2 y 2 x 2 anda bien pero si quiero multiplicar una matriz de 2 x 3 por una de 3 x 2 me sale error 9 fuera de indice.
Mi código para multiplicar es:
Dim nfa As Integer
Dim nca As Integer
Dim nfb As Integer
Dim ncb As Integer
Dim i As Integer
Dim j As Integer
Dim g As Integer
Dim h As Integer
nfa = InputBox("Número de filas de la Matriz A")
nca = InputBox("Número de columnas de la Matriz A")
ReDim a(1 To nfa, 1 To nca)
nfb = InputBox("Número de filas de la Matriz B")
ncb = InputBox("Número de columnas de la Matriz B")
ReDim b(1 To nfb, 1 To ncb)
If (nca = nfb) Then 'redimensiono C ya que las matrices son multiplicables
ReDim c(1 To nfa, 1 To ncb)
End If
'pedir valores A
For i = 1 To nfa
For j = 1 To nca
a(i, j) = InputBox("A (" & i & "," & j & " ) = ")
Next j
Next i
'muestro valores
For i = 1 To nfa
For j = 1 To nca
List1.AddItem a(i, j)
Next j
Next i
'pedir valores B
For i = 1 To nfb
For j = 1 To ncb
b(i, j) = InputBox("B (" & i & "," & j & " ) = ")
Next j
Next i
'muestro valores
For i = 1 To nfb
For j = 1 To ncb
List2.AddItem b(i, j)
Next j
Next i
'multiplicación
Dim k As Integer
For i = 1 To nfa
For j = 1 To nca
c(i, j) = 0
For k = 1 To nfa
c(i, j) = c(i, j) + a(i, k) * b(k, j)
Next k
Next j
Next i
'muestro valores
For i = 1 To nfa
For j = 1 To ncb
List3.AddItem c(i, j)
Next j
Next i
No se como asiganr la matriz C a 0 y multiplicarla en caso de que sea una multiplicación de una matriz 2 x 3 por una 3 x 2.
Disculpa la molestia y espero que cuando tengas un tiempo le eches un viszato a mi consulta.
Estoy realizando una aplicación que sume, reste y multiplique matrices.
Cuando multiplico matrices de igual dimensiones, es decir 2 x 2 y 2 x 2 anda bien pero si quiero multiplicar una matriz de 2 x 3 por una de 3 x 2 me sale error 9 fuera de indice.
Mi código para multiplicar es:
Dim nfa As Integer
Dim nca As Integer
Dim nfb As Integer
Dim ncb As Integer
Dim i As Integer
Dim j As Integer
Dim g As Integer
Dim h As Integer
nfa = InputBox("Número de filas de la Matriz A")
nca = InputBox("Número de columnas de la Matriz A")
ReDim a(1 To nfa, 1 To nca)
nfb = InputBox("Número de filas de la Matriz B")
ncb = InputBox("Número de columnas de la Matriz B")
ReDim b(1 To nfb, 1 To ncb)
If (nca = nfb) Then 'redimensiono C ya que las matrices son multiplicables
ReDim c(1 To nfa, 1 To ncb)
End If
'pedir valores A
For i = 1 To nfa
For j = 1 To nca
a(i, j) = InputBox("A (" & i & "," & j & " ) = ")
Next j
Next i
'muestro valores
For i = 1 To nfa
For j = 1 To nca
List1.AddItem a(i, j)
Next j
Next i
'pedir valores B
For i = 1 To nfb
For j = 1 To ncb
b(i, j) = InputBox("B (" & i & "," & j & " ) = ")
Next j
Next i
'muestro valores
For i = 1 To nfb
For j = 1 To ncb
List2.AddItem b(i, j)
Next j
Next i
'multiplicación
Dim k As Integer
For i = 1 To nfa
For j = 1 To nca
c(i, j) = 0
For k = 1 To nfa
c(i, j) = c(i, j) + a(i, k) * b(k, j)
Next k
Next j
Next i
'muestro valores
For i = 1 To nfa
For j = 1 To ncb
List3.AddItem c(i, j)
Next j
Next i
No se como asiganr la matriz C a 0 y multiplicarla en caso de que sea una multiplicación de una matriz 2 x 3 por una 3 x 2.
Disculpa la molestia y espero que cuando tengas un tiempo le eches un viszato a mi consulta.
1 Respuesta
Respuesta de Roberto Alvarado
1