P_86_E-05

=Matriz: ver si se trata de una matriz simetrica=

Escribir un programa que lea una matriz M de 10 x 10 elementos como máximo.

Ver si se trata de una matriz simétrica.

code format="pascal" PROGRAM arr_2_5 ; USES Crt ;

CONST iMAX_FIL_COL     = 10    ;

TYPE taiMatrices = ARRAY [1..iMAX_FIL_COL, 1..iMAX_FIL_COL] OF Integer;

PROCEDURE LeerDimensiones (VAR iDimension : Integer) ; BEGIN REPEAT Write ('Introduce el Nº de FILAS y COLUMNAS ',             '(1..', iMAX_FIL_COL, '): ') ; Readln (iDimension) ; UNTIL (1 <= iDimension) AND (iDimension <= iDimension) ; END ; (* LeerDimensiones *)

FUNCTION fnboEsSimetrica (CONST aiMatriz  : taiMatrices ;                                iDimension : Integer) : Boolean ; VAR i, j       : Integer ; boSimetrica : Boolean ; BEGIN boSimetrica := TRUE ; FOR i := 1 TO iDimension DO       FOR j :=  i TO iDimension DO            IF aiMatriz [i,j] <> aiMatriz [j,i] THEN boSimetrica := FALSE ;

fnboEsSimetrica := boSimetrica ; END ; (* fnboEsSimentrica *)

PROCEDURE LeerMatriz (VAR aiMatriz  : taiMatrices ;                          iDimension : Integer) ; VAR i, j : Integer ; BEGIN Writeln ; Writeln ; Writeln ('Introduce los valores de los elementos de la matriz') ; Writeln ; Writeln ('Deben ser valores positivos menores de 1000') ; Writeln ; FOR i := 1 TO iDimension DO       BEGIN Writeln ('Escribe los valores de la fila: ', i) ; FOR j := 1 TO iDimension DO           REPEAT Write ('[', i:2, ',', j:2, '] : ') ; Readln (aiMatriz[i,j]) ; UNTIL (0 <=aiMatriz[i,j]) AND (aiMatriz[i,j] < 1000) ; Writeln ; END ; END ; (* MostrarMatriz *)

PROCEDURE MostrarMatriz (CONST aiMatriz  : taiMatrices ;                               iDimension : Integer) ; {   AsMatriz se pasa como CONST al ser una estructura grande } VAR i, j : Integer ; BEGIN FOR i := 1 TO iDimension DO       BEGIN FOR j := 1 TO iDimension DO           Write (aiMatriz[i,j]:5) ; Writeln ; END ; END ; (* MostrarMatriz *)

VAR aiMatriz  : taiMatrices ; iDimension : Integer ; cEspera   : Char ;

BEGIN (**************** PROGRAMA PRINCIPAL **********************) Writeln ; Writeln ('Programa que lee una matriz cuadrada y dice si es simétrica') ; Writeln ; LeerDimensiones (iDimension) ;

LeerMatriz (aiMatriz, iDimension) ;

Writeln ; Writeln ; Writeln ('La matriz leída es: ') ; MostrarMatriz (aiMatriz, iDimension) ;

Writeln ; IF fnboEsSimetrica (aiMatriz, iDimension) THEN Writeln ('SI es una matriz SIMETRICA') ELSE Writeln ('NO es una matriz SIMETRICA') ;

Writeln ; cEspera := ReadKey ; END. code