Вычислить определитель матрицы - Turbo Pascal

Формулировка задачи:

При этом необходимо в программе использовать следующую функцию:
function cdet(var x:mat; t:integer):real;
var i,j,k:integer; s:real; monor:mat;
begin 
if t=1 then calcul:=x[1,1] else begin s:=0;
for k:=1 to t do 
begin
for i:=1 to t-1 do
for j:=1 to k-1 do
minor [i,j]:=x[i+1,j];
for i:=1 to t-1 do
for j:=k to t-1 do
minor [i,j]:=x[i+1,j+1];
if odd(k) then s:=s+x[1,k]*cdet(minor, t-1) 
else s:=s-x[1,k]*cdet(minot, t-1);
end;
cdet:=s;
end;
end;

Код к задаче: «Вычислить определитель матрицы - Turbo Pascal»

textual
uses crt;
const nmax=10;
type mat=array[1..nmax,1..nmax] of real;
function cdet(var x:mat; t:integer):real;
var i,j,k:integer;
    s,b:real;
    minor:mat;
begin
if t=1 then cdet:=x[1,1]
else
 begin
  s:=0;
  for k:=1 to t do
   begin
    for i:=1 to t-1 do
    for j:=1 to k-1 do
    minor [i,j]:=x[i+1,j];
    for i:=1 to t-1 do
    for j:=k to t-1 do
    minor [i,j]:=x[i+1,j+1];
    b:=cdet(minor, t-1);
    if odd(k) then s:=s+x[1,k]*b
    else s:=s-x[1,k]*b;
   end;
  cdet:=s;
 end;
end;
var a:mat;
    n,i,j:integer;
begin
clrscr;
randomize;
repeat
write('Размер матрицы от 1 до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Матрица');
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=-5+10*random;
    write(a[i,j]:6:2);
   end;
  writeln;
 end;
write('Определитель=',cdet(a,n):0:0);
readln
end.

15   голосов, оценка 3.867 из 5


СОХРАНИТЬ ССЫЛКУ