Matriz Cuadrada
Publicado por nolll (1 intervención) el 22/04/2013 20:36:25
Hola, tengo que hacer un ejercicio donde me pide que el usuario ingrese una matriz cuadrada y si todos los numeros, excepto los de la diagonal, son cero entonces que calcule el determinante por ahora lo que hice fue esto pero para recorrer la matriz me tira error en el codigo
program Matrizcuadrada;
uses crt;
const
n=10;
h=10;
type
TArr= array [1..n,1..n] of integer;
vec= array [1..h] of integer;
var
matriz: TArr;
procedure CargarMatriz(var m:TArr);
var
i,j,z: integer;
begin
repeat
writeln('Ingrese el tama¤o del ancho y largo de su matriz cuadrada de nxn');
readln(z);
if z>10 then
writeln('');
writeln('ERROR. El tama¤o debe ser menor o igual que 10');
writeln('');
until z<=10;
clrscr;
for i:=1 to z do
begin
for j:=1 to z do
begin
writeln('Ingrese la posicion ', i,' ',j);
readln(matriz[i,j]);
writeln(' ');
end;
end;
end;
procedure MostrarMatriz(var m:TArr);
var
i,j,z:integer;
begin
clrscr;
for i:=1 to z do
begin
for j:=1 to z do
begin
write(matriz[i,j]);
write(' ');
end;
writeln;
writeln(' ');
end;
end;
Procedure CalDet (var m:TArr; z:integer; var a:vec; var h:integer);
var i,j,k,prod: integer;
begin
h:=1;
for k:= 1 to z-1 do
begin
i:=k;
j:=1;
prod:=1;
while (i>=1) and (j<=z) do
begin
prod:=prod*m[i,j];
i:=i-1;
j:=j+1;
end;
a[h]:=prod;
h:=h+1
end;
for k:=1 to z do
begin
j:=k;
i:=z;
prod:=1;
while (i>=1) and (j<=z) do
begin
prod:=prod*m[i,j];
i:=i-1;
j:=j+1;
end;
a[h]:=prod;
h:=h+1;
end;
h:=h-1;
end;
Function IgualaCero(var m:TArr) : boolean;
var
i,j,z,det:integer;
q: boolean;
begin
for i:=1 to z do
begin
for j:=1 to z do
gotoxy(i,j);
begin
if (i<>j) and (matriz[i,j]=0) then
q:=true ;
end;
end;
if (q=true) then
CalDet(matriz);
else
writeln(' ');
end;
begin
CargarMatriz(matriz);
MostrarMatriz(matriz);
writeln('');
writeln('Presione cualquier tecla para salir del programa');
readkey;
end.
program Matrizcuadrada;
uses crt;
const
n=10;
h=10;
type
TArr= array [1..n,1..n] of integer;
vec= array [1..h] of integer;
var
matriz: TArr;
procedure CargarMatriz(var m:TArr);
var
i,j,z: integer;
begin
repeat
writeln('Ingrese el tama¤o del ancho y largo de su matriz cuadrada de nxn');
readln(z);
if z>10 then
writeln('');
writeln('ERROR. El tama¤o debe ser menor o igual que 10');
writeln('');
until z<=10;
clrscr;
for i:=1 to z do
begin
for j:=1 to z do
begin
writeln('Ingrese la posicion ', i,' ',j);
readln(matriz[i,j]);
writeln(' ');
end;
end;
end;
procedure MostrarMatriz(var m:TArr);
var
i,j,z:integer;
begin
clrscr;
for i:=1 to z do
begin
for j:=1 to z do
begin
write(matriz[i,j]);
write(' ');
end;
writeln;
writeln(' ');
end;
end;
Procedure CalDet (var m:TArr; z:integer; var a:vec; var h:integer);
var i,j,k,prod: integer;
begin
h:=1;
for k:= 1 to z-1 do
begin
i:=k;
j:=1;
prod:=1;
while (i>=1) and (j<=z) do
begin
prod:=prod*m[i,j];
i:=i-1;
j:=j+1;
end;
a[h]:=prod;
h:=h+1
end;
for k:=1 to z do
begin
j:=k;
i:=z;
prod:=1;
while (i>=1) and (j<=z) do
begin
prod:=prod*m[i,j];
i:=i-1;
j:=j+1;
end;
a[h]:=prod;
h:=h+1;
end;
h:=h-1;
end;
Function IgualaCero(var m:TArr) : boolean;
var
i,j,z,det:integer;
q: boolean;
begin
for i:=1 to z do
begin
for j:=1 to z do
gotoxy(i,j);
begin
if (i<>j) and (matriz[i,j]=0) then
q:=true ;
end;
end;
if (q=true) then
CalDet(matriz);
else
writeln(' ');
end;
begin
CargarMatriz(matriz);
MostrarMatriz(matriz);
writeln('');
writeln('Presione cualquier tecla para salir del programa');
readkey;
end.
Valora esta pregunta


0