Array – Sumar Filas/Columnas

Enunciado

Escribir un procedimiento que dada una matriz de números reales y su dimensión, devuelva un vector en donde la posición i almacene la sumatoria de los elementos de la fila i de la matriz.
Escribir un procedimiento que dada una matriz de números reales y su dimensión, devuelva un vector en donde la posición j almacene la sumatoria de los elementos de la columna j de la matriz.

Código

Python

def AddRows ( m, f, c ):
    v = [0]*f
    for i in range ( f ):
        for j in range ( c ):
            v[i] += m[i][j]
    return v

def AddCols ( m, f, c ):
    v = [0]*c
    for j in range ( c ):
        for i in range ( f ):
            v[j] += m[i][j]
    return v

def main():
    cant = 3
    mat = [ [ 3, 5, 7 ], [ 8, 9, 1 ], [ 3, 5, 9 ] ]

    vecf = AddRows( mat, cant, cant )
    
    vecc = AddCols( mat, cant, cant )
    
    print( "Vector suma filas/Add rows vector:" )
    for i in vecf:
        print( str( i ).rjust( 5 ) )
    print( "\n" )
    
    print( "Vector suma columnas/Add Columns vector:" )
    for i in vecc:
        print( str( i ).rjust( 5 ) )
    print( "\n" )
    
    input( "Presionar/Press Enter to exist" )
main()

C++

#include <iostream>
#include <iomanip>
using namespace std ;
#include <conio.h>

void AddRows ( float m[][10], int f, int c, float v[] )
{
   int i, j ;

   for ( i=0; i<f; i++ )
   {
      v[i] = 0 ;
      for ( j=0; j<c; j++ )
   	v[i] += m[i][j] ;
   }
}

void AddCols ( float m[][10], int f, int c, float v[] )
{
   int i, j ;

   for ( j=0; j<c; j++ )
   {
      v[j] = 0 ;
      for ( i=0; i<f; i++ )
   	v[j] += m[i][j] ;
   }
}

int main ()
{
   int  i, j ;
   float v1[10], v2[10], m1[10][10] ;
   	
   cout << "Ingresar matriz de 3x3/Enter 3x3 matrix:" ;
   cout << endl ;
   for ( i=0; i<3; i++ )
   {
       for ( j=0; j<3; j++ )
          cin >> m1[i][j] ;
       cout << endl ;
    }
    
    cout << endl << "Vector suma filas/" ;
    cout << "Add rows vector: " ;
    AddRows( m1, 3, 3, v1 ) ;
    for ( i=0; i<3; i++ )
	cout << v1[i] << setw(5) ;
	
    cout << endl << "Vector suma columnas/" ;
    cout << "Add Columns vector: " ;
    AddCols( m1, 3, 3, v2 ) ;
    for ( i=0; i<3; i++ )
	cout << v2[i] << setw(5) ;
	
    cout << endl ;
    cout << "Presionar/Press Enter to exit " ;	    
    getch() ;
    return 0 ;
}

Pascal

Program Array03 ;
uses CRT ;
const nmax = 10 ;
type
     dim = 1 .. nmax ;
     dimf = 1 .. nmax ;
     dimc = 1 .. nmax ;
     vector = array [ dim ]  of real ;
     matrix = array [ dimf , dimc ] of real ;
     element = real ;
var
     n, i, j, c, f : dim ;
     m : matrix ;
     v : vector ;

Procedure AddRows ( var m: matrix ; f: dimf ; c: dimc ; 
                    var v: vector ) ;
var i : dimf ; j : dimc ;
begin
    for i := 1 to f do
    begin
        v[i] := 0 ;
        for j := 1 to c do
	    v[i] := v[i] + m[i, j]
    end
end ;

Procedure AddCols ( var m: matrix ; f: dimf ; c: dimc ; 
                    var v : vector ) ;
var i : dimf ; j : dimc ;
begin
    for j := 1 to c do
    begin
        v[j] := 0 ;
        for i := 1 to f do
	    v[j] := v[j] + m[i, j]
    end
end ;

begin
    ClrScr ;
    write( 'Ingresar/Enter dimension ( max 10 ): ' ) ; 
    readln( n ) ;
    writeln( 'Ingresar elementos/Enter elements: ' ) ;
    for i := 1 to n do
	for j := 1 to n do
	    readln( m[i, j] ) ;
		
    f := n ;
    c := n ;
    AddRows ( m, f, c, v ) ;
    writeln( 'Vector suma filas/Add rows vector:' ) ;
    for i := 1 to n do
	write( v[i]:10:2 ) ;
    writeln ;
		
    AddCols ( m, f, c, v ) ;
    write( 'Vector suma columnas/' ) ;
    writeln( 'Add Columns vector:' ) ;
    for j := 1 to n do
	write( v[j]:10:2 ) ;
    writeln ;		
		
    writeln( 'Presionar/Press Enter to exit' ) ;
    readln ;
end.

Diagramas