var
a,b,t,x:^integer; //типизированные указатели типа int
c,d,e:integer;
begin
repeat
write('Enter matrix size:'); //вводим размер n параметр
readln(e);
until e>0;
{}
GetMem(a,e*e); //тут что звездочка означает?
t:=a;
for c:=1 to e do
for d:=1 to e do
begin
write('Enter A[',c,',',d,']:');
readln(t^); //обращаемся к памяти?
inc(t);
end;
{}
t:=a;
for c:=1 to e do
begin
for d:=1 to e do
begin
write(t^:5); //обращаемся к памяти?
inc(t);
end;
writeln;
end;
FreeMem(a,e*e); // и тут
end.
begin
b:=new integer[e];
b0:=0;
writeln('Enter B:');
for c:=1 to e do
begin
write('B[',c,']:=');
readln(b[b0]);
inc(b0);
end;
for c:=1 to e do
begin
a0:=0;
b0:=0;
inc(a0,(c-1));
for d:=1 to e do
begin
g:=b[b0];//тут можете написать что делаем?
b[b0]:=a[a0];//тут можете написать что делаем?
a[a0]:=g;//тут можете написать что делаем?
inc(a0,e);//тут можете написать что делаем?
inc(b0);//тут можете написать что делаем?
end;
writeln('x[',c,']:=',det(a,e)/detA);
a0:=0;
b0:=0;
inc(a0,(c-1));
for d:=1 to e do
begin
g:=b[b0];
b[b0]:=a[a0];
a[a0]:=g;
inc(a0,e);
inc(b0);
end;
end;
b:=nil; // это мы память освобождает? если да, то зачем
end;
a:=nil; // это мы память освобождает? если да, то зачем
function det(a:array of integer;b:integer):integer;
var
c:array of integer;
a0,c0:integer;
d,k,k0,i,j,ji:integer;
begin
a0:=0;
k:=1;//
d:=a[a0];
if b>1 then
begin
c:= new integer[(b-1)*(b-1)];
d:=0;
for i:=1 to b do
begin
c0:=0;a0:=0;
for j:=1 to b do begin if i=j then k0:=a[a0];inc(a0);end;
for j:=1 to b-1 do
for ji:=1 to b do
if ji=i then inc(a0)
else begin c[c0]:=a[a0];inc(a0);inc(c0);end;
d:=d+k*k0*det(c,b-1);
k:=-k;
end;
c:=nil;
end;
det:=d;
end;
var
a,b:array of integer;
a0,b0:integer;
c,d,detA,e,g:integer;
begin
repeat write('Enter matrix size:');readln(e);until e>0;
a:= new integer [e*e];
a0:=0;
writeln('Enter A:');
for c:=1 to e do
for d:=1 to e do
begin
write('A[',c,',',d,']:=');
readln(a[a0]);
inc(a0);
end;
detA:=det(a,e);
writeln('determinant=',detA:10);
if detA=0 then writeln('Нет решений')
else
if det(a,e)=0 then writeln('Бесконечное множество решений')
else
begin
b:=new integer[e];
b0:=0;
writeln('Enter B:');
for c:=1 to e do
begin
write('B[',c,']:=');
readln(b[b0]);
inc(b0);
end;
for c:=1 to e do
begin
a0:=0;
b0:=0;
inc(a0,(c-1));
for d:=1 to e do
begin
g:=b[b0];
b[b0]:=a[a0];
a[a0]:=g;
inc(a0,e);
inc(b0);
end;
writeln('x[',c,']:=',det(a,e)/detA);
a0:=0;
b0:=0;
inc(a0,(c-1));
for d:=1 to e do
begin
g:=b[b0];
b[b0]:=a[a0];
a[a0]:=g;
inc(a0,e);
inc(b0);
end;
end;
b:=nil;
end;
a:=nil;
Readln;
end.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.