Помогите разобраться с описанием кода программы для класса Матрица

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[flash] ОТКЛЮЧЕН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
[quote=lapulya_14 post_id=95119 time=1429793917 user_id=37863] Помогите пожалуйста с описанием кода программы, что именно происходит с методами и переменными unit Matrisa; interface type Real=Single; RealP=^Real; type TMatr=class protected Orig: Pointer; kMin, kMax, jMin, jMax:Integer; function ElemPP(k,j:Integer):RealP; public function OutElemm(k,j:integer):Real; procedure InpElemm(k,j:integer;r:Real); constructor Create(kMin_, kMax_, jMin_,jMax_:Integer); destructor destroy; override; property Elemm[k,j:integer]:Real read OutElemm write InpElemm; default; procedure Clearance; procedure Add(x:TMatr); procedure Mul(x:TMatr); function Det2():Real; end; implementation uses Uses_Massiv; function TMatr.ElemPP; begin ElemPP:= Ptr(LongInt(Orig)+((k-kMin)*(jMax-jMin+1)+j-jMin)*Sizeof(Real)); end; function TMatr.OutElemm(k,j:integer):Real; begin Result:=ElemPP(k,j)^; end; procedure TMatr.InPElemm(k,j:integer;r:Real); begin ElemPP(k,j)^:=r; end; constructor TMatr.Create(kMin_,kMax_,jMin_,jMax_:integer); begin inherited Create; kMin:=kMin_;kMax:=kMax_; jmin:=jMin_;jMax:=jMax_; GetMem(Orig,((kMax-kMin+1)*(jMax-jMin+1)*Sizeof(Real))); Clearance; end; destructor TMatr.destroy; begin FreeMem(Orig,((kMax-kMin+1)*(jMax-jMin+1)*Sizeof(Real))); inherited Destroy; end; procedure TMatr.Clearance; var k,j:Integer; begin for k:=kMin to kMax do for j:=jMin to jMax do Elemm[k,j]:=0.0; end; procedure TMatr.Add(x:TMatr); var k,j:integer; begin for k:=kMin to kMax do Elemm[k,j]:= Elemm[k,j]+x.Elemm[k,j]; end; procedure TMatr.Mul(x:TMatr); var k,j:Integer; begin for k:=kMin to kMax do for j:=jMin to jMax do Elemm[k,j]:=Elemm[k,j]*x.Elemm[k,j]; end; function TMatr.Det2; var S:Real; begin S:=0; {for k:=kMin to kMax do for j:=jMin to jMax do} S:=Elemm[1,1]*Elemm[2,2]-Elemm[1,2]*Elemm[2,1]; Det2:=S; end; end. [/quote]
   

Развернуть Обзор темы:Помогите разобраться с описанием кода программы для класса Матрица

Помогите разобраться с описанием кода программы для класса Матрица

lapulya_14 »23 апр 2015, 15:58

Помогите пожалуйста с описанием кода программы, что именно происходит с методами и переменными

unit Matrisa;
interface
type Real=Single;
RealP=^Real;
type TMatr=class
protected
Orig: Pointer;
kMin, kMax, jMin, jMax:Integer;
function ElemPP(k,j:Integer):RealP;
public
function OutElemm(k,j:integer):Real;
procedure InpElemm(k,j:integer;r:Real);
constructor Create(kMin_, kMax_, jMin_,jMax_:Integer);
destructor destroy; override;
property Elemm[k,j:integer]:Real read OutElemm write InpElemm;
default;
procedure Clearance;
procedure Add(x:TMatr);
procedure Mul(x:TMatr);
function Det2():Real;
end;

implementation
uses Uses_Massiv;
function TMatr.ElemPP;
begin
ElemPP:= Ptr(LongInt(Orig)+((k-kMin)*(jMax-jMin+1)+j-jMin)*Sizeof(Real));
end;
function TMatr.OutElemm(k,j:integer):Real;
begin
Result:=ElemPP(k,j)^;
end;
procedure TMatr.InPElemm(k,j:integer;r:Real);
begin
ElemPP(k,j)^:=r;
end;
constructor TMatr.Create(kMin_,kMax_,jMin_,jMax_:integer);
begin
inherited Create;
kMin:=kMin_;kMax:=kMax_;
jmin:=jMin_;jMax:=jMax_;
GetMem(Orig,((kMax-kMin+1)*(jMax-jMin+1)*Sizeof(Real)));
Clearance;
end;
destructor TMatr.destroy;
begin
FreeMem(Orig,((kMax-kMin+1)*(jMax-jMin+1)*Sizeof(Real)));
inherited Destroy;
end;
procedure TMatr.Clearance;
var k,j:Integer;
begin
for k:=kMin to kMax do
for j:=jMin to jMax do
Elemm[k,j]:=0.0;
end;
procedure TMatr.Add(x:TMatr);
var k,j:integer;
begin
for k:=kMin to kMax do
Elemm[k,j]:= Elemm[k,j]+x.Elemm[k,j];
end;
procedure TMatr.Mul(x:TMatr);
var k,j:Integer;
begin
for k:=kMin to kMax do
for j:=jMin to jMax do
Elemm[k,j]:=Elemm[k,j]*x.Elemm[k,j];
end;
function TMatr.Det2;
var S:Real;
begin
S:=0;
{for k:=kMin to kMax do
for j:=jMin to jMax do}
S:=Elemm[1,1]*Elemm[2,2]-Elemm[1,2]*Elemm[2,1];
Det2:=S;
end;
end.

Вернуться к началу