Hola, taringueros! Soy estudiante de Ingeniería y, por lo tanto, programo bastante. A continuación, adjunto un archivo en formato .txt que pueden ejecutarlo sin ningún problema en FreePascal®. Lo único que tienen que hacer para pasarlo al compilador es copiar el código en algún procesador de texto tipo Wordpad®, guardarlo y luego cambiarle la extensión a .pas. El código es un programa que permite ingresar la dimensión de una matriz, luego ingresar sus componentes (una a una) y finalmente dice si la matriz ingresada es cuadrada e inclusive si se trata de la matriz identidad.
Espero que les sirva!!!
PS. Para descargar el FreePascal® de forma segura, dirigirse al sitio www.freepascal.org y seleccionar la opción correcta.
No se olviden de votar!!
BLOQUE DE CÓDIGO
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.