InicioCiencia EducacionFree Pascal - Ejemplo de ejercicio de matriz identidad

Free Pascal - Ejemplo de ejercicio de matriz identidad

Ciencia Educacion•5/23/2014
Free Pascal - Ejemplo de ejercicio de matriz identidad



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.
Datos archivados del Taringa! original
57puntos
715visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
11visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

l
Usuario
Puntos0
Posts12
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.