Comprobar+si+matriz+es+simetrica

=__**Comprobar si una matriz es simetrica**__=

Leer matriz cuadrada y comprobar si es una matriz simetrica respecto de la diagonal principal.

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 + 1 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) ; 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 *)

{ Variables del programa principal ---} VAR aiMatriz  : taiMatrices ; iDimension : Integer ; cEspera   : Char ;

BEGIN {-- PROGRAMA PRINCIPAL } Clrscr ; 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. (* FIN de ARR_2_13.PAS *) code