Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
58
Добавлен:
10.05.2014
Размер:
2.93 Кб
Скачать
{$M 64000,0,600000}
{$R+}
program the_matrix;
const
MAX_RANK = 10;
type
str100 = string[100];
str11 = string[128];
matrix_element = integer;
matrix_row = array[1..MAX_RANK]of matrix_element;
matrix_2d = array[1..MAX_RANK]of matrix_row;
matrix = record
data:matrix_2d;
rank:byte;
end;

function get_string(message:str100):str11;
var
response:str11;
begin
write(message,': ');
readln(response);
get_string:=response;
end;
function open_file(file_name:str11;var opened_file:text):boolean;
begin
assign(opened_file,file_name);
{$I-}
reset(opened_file);
{$I+}
open_file:=ioresult=0;
end;
function get_row(var matrix_file:text;var row:matrix_row):byte;
var
i:byte;
begin
i:=0;
while not eoln(matrix_file) do{зЁв Ґ¬ ¤® Є®­ж  бва®ЄЁ}
begin
i:=i+1;
read(matrix_file,row[i]);{зЁв Ґ¬ Є ¦¤л© н«Ґ¬Ґ­в}
end;
readln(matrix_file);
get_row:=i;{ў®§ўа й Ґ¬ Є®«-ў® н«Ґ¬Ґ­в®ў}
end;
procedure get_matrix(var matrix_file:text;var m:matrix);
var
i:byte;
begin
i:=0;
while not eof(matrix_file) do{¤® Є®­ж  д ©« }
begin
i:=i+1;
if(get_row(matrix_file,m.data[i])=0)then{зЁв Ґ¬ Є ¦¤го бва®Єг}
i:=i-1;{Ґб«Ё н«Ґ¬Ґ­в®ў 0, ­Ґ ¬Ґ­пҐ¬ i}
end;
m.rank:=i;{Ї®«гз Ґ¬ а §¬Ґа­®бвм ¬ ваЁжл Ё§ Є®«ЁзҐбвў  бва®Є}
end;

function sign_1(i:integer):shortint;
begin
if (i mod 2) = 0 then
sign_1:=1
else
sign_1:=-1;
end;
procedure matrix_minor(var m:matrix;row,column:byte);
var
i,j:byte;
begin
for i:=row to m.rank-1 do{Є®ЇЁа㥬 бва®Є¬ ᮠᬥ饭ЁҐ¬ Ї®б«Ґ г¤ «пҐ¬®© бва®ЄЁ}
m.data[i]:=m.data[i+1];
for j:=column to m.rank-1 do{Є®ЇЁа㥬 бв®«Ўжл ᮠᬥ饭ЁҐ¬ Ї®б«Ґ г¤ «пҐ¬®Ј® бв®«Ўж }
for i:=1 to m.rank do
m.data[i][j]:=m.data[i][j+1];
m.rank:=m.rank-1;{㬥­ми Ґ¬ а §¬Ґа­®бвм ¬ ваЁжл}
end;
function matrix_det(m:matrix):longint;
var
i:byte;
det:longint;
minor:matrix;
begin
det:=0;
if(m.rank=1)then{Ґб«Ё ¬ ваЁж  1x1, ў®§ўа й Ґ¬ ®ЇаҐ¤Ґ«ЁвҐ«м}
matrix_det:=m.data[1][1]
else{Ё­ зҐ}
begin
for i:=1 to m.rank do{¤«п Є ¦¤®Ј® бв®«Ўж }
begin
minor:=m;{бзЁв Ґ¬ ¬Ё­®а}
matrix_minor(minor,1,i);
det:=det+matrix_det(minor)*m.data[1][i]*sign_1(i+1);{бзЁв Ґ¬ б㬬㠤ҐвҐа¬Ё­ ­в®ў ¬Ё­®а®ў}
end;
matrix_det:=det;
end;
end;

var
file_name:str11;
matrix_file:text;
probed_matrix:matrix;
det:longint;
begin
file_name:=get_string('‚ўҐ¤ЁвҐ Ё¬п д ©« ');{бЇа иЁў Ґ¬ Ё¬п д ©« }
if(open_file(file_name,matrix_file))then{®вЄалў Ґ¬ д ©« ­  з⥭ЁҐ}
begin{Ґб«Ё д ©« ¤®бвгЇҐ­}
get_matrix(matrix_file,probed_matrix);{зЁв Ґ¬ ¬ ваЁжг}
det:=matrix_det(probed_matrix);{бзЁв Ґ¬ ¤ҐвҐа¬Ё­ ­в}
writeln('„ҐвҐа¬Ё­ ­в ¬ ваЁжл а ўҐ­ ',det);{ўлў®¤Ё¬ १г«мв в}
close(matrix_file);{§ Єалў Ґ¬ д ©«}
end
else{Ё­ зҐ}
writeln('’ Є®Ј® д ©«  ­Ґ бгйҐбвўгҐв.');{ўлў®¤Ё¬ б®®ЎйҐ­ЁҐ ®Ў ®иЁЎЄҐ}
readln;
end.
Соседние файлы в папке 01