Sumar+matrices

=__**Leer, Mostrar, Sumar dos matrices**__= > code format="pascal" PROGRAM Sumar_matrices ; USES Crt ; CONST iMAX_FILAS   = 5 ; iMAX_COLUMNAS = 5 ; TYPE taiMatriz = ARRAY [1..iMAX_FILAS, 1..iMAX_COLUMNAS] OF Integer ;

PROCEDURE LeerDimensiones (VAR byFilas, byColumnas : Byte) ; BEGIN REPEAT Write ('Introduce el Nº de FILAS    (1..', iMAX_FILAS, '): ') ; Readln (byFilas) ; UNTIL (0 < byFilas) AND (byFilas <= iMAX_FILAS) ;

REPEAT Write ('Introduce el Nº de COLUMNAS (1..', iMAX_COLUMNAS, '): '); Readln (byColumnas) ; UNTIL (0 < byColumnas) AND (byColumnas <= iMAX_COLUMNAS) ; END ; { LeerDimensiones }

PROCEDURE LeerMatriz (VAR aiMatriz : taiMatriz ;                         byFilas, byColumnas : Byte) ; VAR i, j : Byte ; BEGIN FOR i := 1 TO byFilas DO     BEGIN Writeln ('Introduciendo fila ', i, ':') ; FOR j := 1 TO byColumnas DO         BEGIN Write ('Elemento [', i, ',', j, ']: ') ; Readln (aiMatriz [i, j]) ; END ; END ; END ; { LeerMatriz }

PROCEDURE MostrarMatriz (CONST aiMatriz : taiMatriz ;                              byFilas, byColumnas : Byte) ; VAR i, j : Byte ; BEGIN Writeln ; FOR i := 1 TO byFilas DO     BEGIN FOR j := 1 TO byColumnas DO         Write (aiMatriz [i, j]:8) ; Writeln ; END ; Writeln ; END ; { MostrarMatriz }

PROCEDURE SumarMatrices (CONST aiMatriz_A, aIMatriz_B: taiMatriz ;                        VAR   aiMatriz_C            : taiMatriz ;                               byFilas, byColumnas   : Byte) ; VAR i, j : Byte ; BEGIN FOR i := 1 TO byFilas DO     FOR j := 1 TO byColumnas DO          aiMatriz_C [i,j] := aiMatriz_A [i,j] + aiMatriz_B [i,j] ; END ; { SumarMatrices }

{-- Variables del programa principal --} VAR aiMatriz_A, aiMatriz_B, aiMatriz_C : taiMatriz ; byFilas_A, byColumnas_A, byFilas_B, byColumnas_B : Byte ;

BEGIN { Programa Principal } Writeln ; Writeln ('Escribe la primera matriz:') ; LeerDimensiones (byFilas_A, byColumnas_A) ; LeerMatriz (aiMatriz_A, byFilas_A, byColumnas_A) ;

Writeln ('Escribe la segunda matriz:') ; LeerDimensiones (byFilas_B, byColumnas_B) ; { Sumar las dos matrices solamente en el caso de ser posible } IF (byFilas_A <> byFilas_B) OR (byColumnas_A <> byColumnas_B) THEN BEGIN Writeln ; Writeln ('No se puede sumar esta matriz con la anterior: ') ; Writeln ('     debe tener, ', byFilas_A,' fila(s)  y ',               byColumnas_A, ' columna(s)') ; Writeln ; END ELSE BEGIN LeerMatriz (aiMatriz_B, byFilas_B, byColumnas_B) ;

SumarMatrices (aiMatriz_A, aiMatriz_B, aiMatriz_C,                    byFilas_A, byColumnas_A) ; Writeln ; Writeln ('La matriz A, leída es: ') ; MostrarMatriz (aiMatriz_A, byFilas_A, byColumnas_A) ;

Writeln ; Writeln ('La matriz B, leída es: ') ; MostrarMatriz (aiMatriz_B, byFilas_B, byColumnas_B) ;

Writeln ; Writeln ('La matriz suma es (matriz C): ') ; MostrarMatriz (aiMatriz_C, byFilas_A, byColumnas_A) ; END ;

Writeln ; Readln ; END. { Final de Sumar_matrices.PAS } code