Plantee e implemente un programa en PASCAL que permita introducir un cuadrado (3x3) por teclado y determine si es mágico. Un cuadrado mágico es una matriz 3x3 de números enteros del 1 al 9 en la que la suma de sus filas, sus columnas y sus diagonales principales coincide.
PROGRAM matrices(input,output);
CONST
limitefilas = 3;
limitecolumnas = 3;
TYPE
Tabla = ARRAY[1..limitefilas, 1..limitecolumnas] OF integer;
VAR
matriz:Tabla;
mtraspuesta:Tabla;
fila,columna:integer;
a:integer;
(*******************************************************************************)
PROCEDURE leer;
VAR
I,L,numero:integer;
BEGIN
fila:=3;
columna:=3;
FOR I:=1 TO fila DO
BEGIN
FOR L:=1 TO columna DO
BEGIN
write('Escriba el numero del elemento fila: ',I:2,' columna: ',L:2,' :');
read(numero);
matriz[I,L]:= numero;
END;
END;
END;
(*******************************************************************************)
PROCEDURE Imprimir_Matriz;
VAR
I,L: integer;
BEGIN
FOR I:=1 TO fila DO
BEGIN
writeln;
FOR L:=1 TO columna DO
BEGIN
write(matriz[I,L]:8);
write(' ');
END;
END;
writeln;
END;
(*******************************************************************************)
PROCEDURE magica;
BEGIN
IF ((matriz[1,1]+matriz[1,2]+matriz[1,3])=(matriz[2,1]+matriz[2,2]+matriz[2,3]))AND((matriz[1,1]+matriz[1,2]+matriz[1,3])=(matriz[3,1]+matriz[3,2]+matriz[3,3]))AND
((matriz[1,1]+matriz[2,1]+matriz[3,1])=(matriz[1,2]+matriz[2,2]+matriz[3,2]))AND((matriz[1,3]+matriz[2,3]+matriz[3,3])=(matriz[1,2]+matriz[2,2]+matriz[3,2]))AND
((matriz[1,1]+matriz[2,2]+matriz[3,3])=(matriz[1,3]+matriz[2,2]+matriz[3,1]))AND((matriz[1,3]+matriz[2,2]+matriz[3,1])=(matriz[1,1]+matriz[1,2]+matriz[1,3])) THEN
writeln('La matriz es magica') ELSE writeln('La matriz no es magica');
END;
(*******************************************************************************)
BEGIN
leer;
Imprimir_Matriz;
magica;
read(a);
END.
Ejemplo de ejecución
Suscribirse a:
Enviar comentarios (Atom)
Yo este ejercicio no lo veo asi. Pongo lo que entiendo yo:
ResponderEliminarPROGRAM ejer14 (input,output);
CONST
n=4;
TYPE
Tmatriz=ARRAY[1..n,1..n]OF integer;
VAR
matriz:Tmatriz;
seleccion: integer;
(*******************************************************************)
PROCEDURE leer(VAR matriz: tmatriz);
VAR
i,j:integer;
BEGIN
FOR i:=1 to n DO
FOR j:=1 to n DO
BEGIN
write('escriba el elemento fila ',i:2,' columna',j:2,': ');
read(matriz[i,j]);
END;
END;
(***********************************************************************)
PROCEDURE escribir(matriz: tmatriz);
VAR
i,j:integer;
BEGIN
FOR i:=1 to n do BEGIN
for j:=1 to n do begin
write(matriz[i,j]);
write(' ');
end;
Writeln;
END;
END;
(***********************************************************************)
PROCEDURE intercambio (matriz: tmatriz);
VAR
fila, columna: integer;
aux: array[1..4] OF integer;
i,j: integer;
edit: tmatriz;
BEGIN
Write('Que fila quieres intercambiar?');
readln(fila);
write('Que columna quieres intercambiar?');
readln(columna);
FOR j:=1 to 4 DO
aux[j]:=matriz[fila,j]; {Almacenamos en un ausiliar la fila que nosotros queremos cambiar}
FOR i:=1 to 4 DO
matriz[fila,i]:=matriz[i,columna]; {En la fila que queremos cambiar ponemos la columna a cambiar}
for i:=1 to 4 DO
matriz[i,columna]:=aux[i]; {En la columna que queremos cambiar guardamos el auxiliar que contiene la fila cambiada}
escribir(matriz);
END;
(***********************************************************************)
{programa ppal}
BEGIN
leer(matriz);
repeat
Writeln('Elige una opcion: ');
writeln('1. Intercambiar filas y/o columnas');
writeln('0. salir');
read(seleccion);
IF seleccion=1 THEN intercambio(matriz);
UNTIL seleccion=0;
escribir(matriz);
END.
No... me equivoque de sitio, borra ese mensaje!!
ResponderEliminar