Надо дописать проверку ввода, и еще пожалуйста допишие за что отвечает каждая строчка вот словесное:Показать, что, если элементы какого-либо ряда определителя умножить на число, то определитель также умножится на это же число.
А вот сама програмка:
program opred;
uses crt;
type
Tmatr=array [1..20,1..20] of real;
var n:integer;
a:Tmatr;
det,ch,det1:real;
i,j,ns:integer;
procedure Per(k,n:integer;var a:Tmatr; var p:integer);
//процедура перестановки строк, если главный элемент равен 0
var i,j:integer;z:real;
begin


z:=a[k,k];i:=k;p:=0;
for j:=k+1 to n do
begin
if abs(a[j,k])>z then
begin
z:=abs(a[j,k]);i:=j;
p:=p+1;
end;
end;
if i>k then
for j:=k to n do
begin
z:=a[i,j];a[i,j]:=a[k,j];a[k,j]:=z;
end;
end;
function znak(p:integer):integer;

begin
if p mod 2=0 then
znak:=1 else znak:=-1;
end;
procedure opr(n:integer;var a:Tmatr;var det:real);
//собственно процедура нахождения определителя
var k,i,j,p:integer;
r:real;
begin
det:=1;
for k:=1 to n do
begin
if a[k,k]=0 then per(k,n,a,p);
det:=znak(p)*det*a[k,k];
for j:=k+1 to n do
begin
r:=a[j,k]/a[k,k];
for i:=k to n do
begin
a[j,i]:=a[j,i]-r*a[k,i];
end;
end;
end;
end;
begin
clrscr;
write('n=');readln(n);
writeln('Ischodnaia matritsha');
randomize;
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=random(10)+random;
write(a[i,j]:6:2);
end;
writeln;
end;
writeln;
opr(n,a,det);//считаем определитель исходной матрицы
writeln('opr=',det:4:1);
writeln;
write('Stroka=');readln(ns);
write('Chislo=');readln(ch);
for j:=1 to n do
a[ns,j]:=a[ns,j]*ch;
opr(n,a,det1);
writeln;
write('opr1=',det1:4:1);//считаем определитель после умножения строки на число
readln
end.