Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2015, 22:32   #1
Кари
 
Регистрация: 04.04.2015
Сообщений: 8
Сообщение Помогите разобрать код Delphi

Помогите разобраться что к чему. Если можно, то с комментариями к строкам. Знаю, что код вычисляет обратную матрицу, но не могу разобраться. Спасибо
Код:
var
Form1: TForm1;
kol: integer;
obr: array[0..300, 0..300] of real;

implementation

{$R *.dfm}

procedure Obratis;
var k, i, j: integer;
b: array[0..300, 0..300] of real;
begin
for k:=0 to kol - 1 do
begin
for i:=0 to kol - 1 do
for j:=0 to kol - 1 do
begin
if (i=k) and (j=k) then
b[i,j] := 1/obr[i,j];
if (i=k) and (j<>k) then
b[i,j] := -obr[i,j]/obr[k,k];
if (i<>k) and (j=k) then
b[i,j] := obr[i,k]/obr[k,k];

if (i<>k) and (j<>k) then
b[i,j] := obr[i,j] - obr[k,j] * obr[i,k]/obr[k,k];
end;
for i:= 0 to kol - 1 do
for j:= 0 to kol - 1 do obr[i, j]:= b[i, j];
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
form1.Close;
end;

procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
kol:= SpinEdit1.Value;
StringGrid1.ColCount:= kol;
StringGrid1.RowCount:= kol;
StringGrid2.ColCount:= kol;
StringGrid2.RowCount:= kol;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i, j: integer;
begin
randomize;
for i:= 0 to kol - 1 do
for j:= 0 to kol - 1 do
StringGrid1.Cells[i, j]:= IntToStr(random(200) - 100);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
kol:= 1;
end;

procedure TForm1.Button2Click(Sender: TObject);
var i, j: integer;
i1, j1: integer;
begin
i1:= 1;
j1:= 1;
try
for i:= 0 to kol - 1 do
for j:= 0 to kol - 1 do
begin
i1:= i;
j1:= j;
obr[i, j]:= StrToFloat(StringGrid1.Cells[j, i]);
end;
except
ShowMessage('Ошибка при вводе числа в столбце ' + IntToStr(j1 + 1) + ' строке ' + IntToStr(i1 + 1) + '!');
exit;
end;

Obratis;
for i:= 0 to kol - 1 do
for j:= 0 to kol - 1 do
StringGrid2.Cells[i, j]:= FloatToStr(Round(1000*obr[j, i])/1000);
end;

end.

Последний раз редактировалось Аватар; 14.05.2015 в 22:39.
Кари вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобрать статью Глава 39 - Украденные байты, украденный код Dimka-novitsek Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 14.09.2014 11:33
Разобрать html код Predator199 PHP 2 23.06.2014 21:41
Помогите пожалуйста разобрать код!!! vadim93 Помощь студентам 2 24.12.2013 14:56
Разобрать код С++ Al-chan Помощь студентам 6 24.02.2013 21:15