Suma de filas y columnas de una matriz

Iniciado por Ahinoam, 15 Diciembre 2016, 06:14 AM

0 Miembros y 1 Visitante están viendo este tema.

Ahinoam

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)



Y este es el código que realice. (PD: Estoy trabajando en visual basic y en Windows form)

Código (vb) [Seleccionar]
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.

okik

#1
Código (vbnet) [Seleccionar]

    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


Código (vbnet) [Seleccionar]
     
   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))



Ahinoam

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
;-)  ;-)  ;-)