Hola a todos, me encargaron un problema de Matrices (Como lo dice en el titulo), tengo que sumar las filas y columnas de una Matriz y sus diagonales invertida y principal.
Esta es una imagen del problema que tengo que hacer. (Esto es un ejemplo los valores pueden ser cualquiera no necesariamente esos)(https://k60.kn3.net/4/7/F/5/1/3/FB2.png)
Y este es el código que realice. (PD: Estoy trabajando en visual basic y en Windows form)Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim Matriz(4, 4) As Integer
Dim SR(4) As Integer
Dim SC(4) As Integer
Dim DP, DI, F, C As Integer
For F = 1 To 4
For C = 1 To 4
Matriz(F, C) = CType(InputBox("Dame el valor: " & "Matriz[" & F & "," & C & "]: "), Integer)
SR(F) = SR(F) + Matriz(F, C)
If F = C Then
DP = DP + Matriz(F, C)
End If
If F + C = 5 Then
DI = DI + Matriz(F, C)
End If
Next
Next
For C = 1 To 4
For F = 1 To 4
SC(C) = SC(C) + Matriz(F, C)
Next
Next
End Sub
End Class
Y no puedo llegar a obtener el resultado de la suma de cada fila, columna, y las dos diagonales.
En resumen:
"SR" es la suma de cada una de las columnas 1, 2, 3, 4
"SC" es la suma de cada una de las filas 1, 2, 3, 4
"DP" es la suma de los valores que estén en la diagonal principal
"DI" es la suma de los valores que estén en la diagonal invertida.
Espero y me puedan ayudar, si tiene alguna duda sobre el problema pregunten.
Dim Matriz(4, 4) As Integer
Dim SR(4) As Integer
Dim SC(4) As Integer
Dim DP, DI, F, C As Integer
For F = 1 To 4
For C = 1 To 4
Matriz(F, C) = CType(InputBox("Dame el valor: " & _
"Matriz[" & F & "," & C & "]: "), Integer)
'//Suma de filas
SC(C) += Matriz(F, C)
Next
Next
Dim Dc As Integer = 4
For C = 1 To 4
For F = 1 To 4
'//Suma de columnas
SR(F) += Matriz(F, C)
Next
'//Suma diagonal principal A11 + A22 + A33+ + A44
DP += Matriz(C, C)
'//Suma diagonal invertida A14 + A23 + A32+ + A41
DI += Matriz(C, Dc)
Dc -= 1
Next
' Suma de filas
MessageBox.Show("Suma de filas: " & String.Join(", ", SC))
' Suma de columnas
MessageBox.Show("Suma de columnas: " & String.Join(", ", SR))
' Suma de diagonal principal (De izquierda a derecha)
MessageBox.Show("Suma de diagonal principal: " & String.Join(", ", DP))
' Suma de diagonal invertida (de derecha a izquierda)
MessageBox.Show("Suma de diagonal invertida: " & String.Join(", ", DI))
Supongo que lo sabes pero por si acaso te lo comento, ten en cuenta que las variables array empiezan por 0, 1, 2...
Así que el messagebox muestra 0, 32, 36, 40, 16, o sea, cinco números en SR y SC. Esto es debido a que no se mete ningún valor en SR(0) y SC(0), estos últimos hay que ignorarlos. Pero se podría hacer desde 0 a 3
He usado el messagebox simplemente para mostrar los resultados de forma rápida
De esta manera ya no aparecerá el 0 y SR y SC devuelve sólo cuatro valores
Dim Matriz(4, 4) As Integer
Dim SR(3) As Integer
Dim SC(3) As Integer
Dim DP, DI, F, C As Integer
For F = 1 To 4
For C = 1 To 4
Matriz(F, C) = CType(InputBox("Dame el valor: " & _
"Matriz[" & F & "," & C & "]: "), Integer)
'//Suma de filas
SC(C - 1) += Matriz(F, C)
Next
Next
Dim Dc As Integer = 4
For C = 1 To 4
For F = 1 To 4
'//Suma de columnas
SR(F - 1) += Matriz(F, C)
Next
'//Suma diagonal principal A11 + A22 + A33+ + A44
DP += Matriz(C, C)
'//Suma diagonal invertida A14 + A23 + A32+ + A41
DI += Matriz(C, Dc)
Dc -= 1
Next
' Suma de filas
MessageBox.Show("Suma de filas: " & String.Join(", ", SC))
' Suma de columnas
MessageBox.Show("Suma de columnas: " & String.Join(", ", SR))
' Suma de diagonal principal (De izquierda a derecha)
MessageBox.Show("Suma de principal: " & String.Join(", ", DP))
' Suma de diagonal invertida (de derecha a izquierda)
MessageBox.Show("Suma de invertida: " & String.Join(", ", DI))
Muchas gracias, por ayudarme enserio gracias, y respecto a que los array empiezan por 0 lo había visto en ejemplos de java. En fin gracias por ayudarme
;-) ;-) ;-)