Sei sulla pagina 1di 3

program matriz;

uses crt;

const MAX=10; MIN=1; //Establezco minimos y maximos como constantes para hacer
cualquier cambio necesario desde aca sin necesidad de estar cambiando parte de los
bloques de codigo siguientes

type componente=integer; num_filas= MIN..MAX; num_columnas=MIN..MAX;

t_matriz=array [MIN..MAX,MIN..MAX] of componente;//preferi usar num_filas y


num_columnas como tipos porque creo que se hace mas sencillo de leer el codigo y me
evita tener que escribir las constantes nuevamente

//procedimiento que permite al usuario definir la dimension de la matriz


procedure dimension (var filas:num_filas; var columnas:num_columnas);
begin
repeat
writeln('Ingrese el numero de filas de la matriz que desea construir,');
writeln('teniendo en cuenta que el minimo de filas es 2 y el maximo es 10
inclusive');
readln(filas);
writeln('Ingrese el numero de columnas de la matriz que desea construir,');
writeln('teniendo en cuenta que el minimo de columnas es 2 y el maximo es 10
inclusive');
readln(columnas);
until ((filas>=2) and (filas<=10)) and ((columnas>=2) and (columnas<=10))
end;

//procedimiento que informa la dimension de la matriz creada


procedure informe (var filas:num_filas; var columnas:num_columnas);
begin
writeln('Usted ha creado una matriz de ',filas,' x ',columnas);
writeln('Su matriz cuenta con ',filas*columnas,' componentes')
end;

//procedimiento que valida la dimension matricial


procedure validar (var x:num_filas;var y:num_columnas);
begin
repeat
dimension(x,y);
until (((x>=2) and (x<=10)) and ((y>=2) and (y<=10)));
informe(x,y)
end;

//procedimiento carga de componentes de la matriz


procedure carga (var mat:t_matriz; m:num_filas; n:num_columnas);
var i:num_filas; j:num_columnas;
begin
for i:=1 to m do
for j:=1 to n do
begin
writeln('Ingrese la componente [',i,',',j,'] de la matriz');
readln(mat[i,j])
end;
end;

//procedimiento que muestra la matriz


procedure mostrar (var mat:t_matriz; m:num_filas; n:num_columnas);
var i:num_filas; j:num_columnas;
begin
for i:=1 to m do
begin
for j:=1 to n do
write(' ',mat[i,j],' ');
writeln; writeln
end;
end;

//procedimiento que determina si la matriz es I


procedure identidad (var mat:t_matriz; m:num_filas; n:num_columnas);
var i:num_filas; j:num_columnas; seguirleyendo:boolean;
begin
i:=1;
seguirleyendo:=true;
while (i<=m) and (seguirleyendo=true) do
begin
j:=1;
while(j<=n) and (seguirleyendo=true) do
begin
if ((i=j) and (mat[i,j]=1)) or ((i<>j) and (mat[i,j]=0)) then
seguirleyendo:=true
else
seguirleyendo:=false;
inc(j)
end;
inc(i)
end;
if (seguirleyendo=true) then
writeln('La matriz ingresado es la MATRIZ IDENTIDAD.')
else
writeln('La matriz ingresada no es la identidad.')
end;

//procedimiento que permite determinar si la matriz es cuadrada


procedure cuadrada (var a:num_filas; var b:num_columnas; var mat:t_matriz);

begin
if (a=b) then
begin
writeln ('La matriz es cuadrada');
identidad(mat,a,b)
end
else
begin
writeln ('Usted ha ingresado una matriz no cuadrada,');
writeln('por lo tanto, no tiene posibilidad de ser la matriz identidad.')
end
end;

//bloque principal
var x:num_filas; y:num_columnas; mat:t_matriz;

begin
clrscr;
validar(x,y);
writeln;
carga(mat,x,y);
writeln;
mostrar(mat,x,y);
cuadrada (x,y,mat);
readkey;
readln

end.

Potrebbero piacerti anche