Разработка классов на языке Object Pascal. Соколов Е.В. - 65 стр.

UptoLike

Составители: 

65
Пример 4.2.1. Модификация программы из задачи 3.1.
program TestDynamicVector;
{$APPTYPE CONSOLE}
uses UnitDynamicVector in 'UnitDynamicVector.pas',
UnitNumber in 'UnitNumber.pas',
UnitWhole in 'UnitWhole.pas',
UnitRational in 'UnitRational.pas',
UnitRGBColor in 'UnitRGBColor.pas';
procedure Test(v1, v2: DynamicVector);
var v3, v4: DynamicVector; p: Number;
begin
WriteLn('v1: '+v1.AsString); WriteLn('v2: '+v2.AsString);
v1.SetDim(5); WriteLn('v1 after v1.SetDim(5): '+v1.AsString);
v2.SetDim(5); WriteLn('v2 after v2.SetDim(5): '+v2.AsString);
v3:=v1.Plus(v2); WriteLn('v3 after v3:=v1.Plus(v2): '+v3.AsString);
v1.Add(v2); WriteLn('v1 after v1.Add(v2): '+v1.AsString);
if v1.IsEqual(v3)
then WriteLn('v1 is equal to v3')
else WriteLn('v1 is not equal to v3');
v4:=DynamicVector.CreateOfType(v2.GetCompType); v4.SetDim(5);
v4.Assign(v2); WriteLn('v4 after v4.Assign(v2): '+v4.AsString);
v4.Subtract(v1);
WriteLn('v2 after v4.Subtract(v1): '+v2.AsString);
WriteLn('v4 after v4.Subtract(v1): '+v4.AsString);
p:=v2.ScalarProduct(v4);
WriteLn('v2.ScalarProduct(v4): '+p.AsString);
p.Destroy; v3.Destroy; v4.Destroy;
end;
var v1, v2: DynamicVector;
w: Whole; r: Rational; c: RGBColor; i: Integer;
begin
v1:=DynamicVector.CreateOfType(Whole); v1.SetDim(9);
v2:=DynamicVector.CreateOfType(Whole); v2.SetDim(7);
w:=Whole.Create;
for i:=1 to 9 do begin w.SetValue(i); v1.SetComp(i, w); end;
for i:=1 to 7 do begin w.SetValue(i+1); v2.SetComp(i, w); end;
Test(v1, v2);
w.Destroy; v1.Destroy; v2.Destroy; WriteLn;
v1:=DynamicVector.CreateOfType(Rational); v1.SetDim(9);
v2:=DynamicVector.CreateOfType(Rational); v2.SetDim(7);
r:=Rational.Create;
for i:=1 to 9 do begin
r.SetNum(i); r.SetDen(i+1); v1.SetComp(i, r);
end;
Пример4.2.1. М од ификац ия програм м ы из з ад ачи 3.1.

program TestDynamicVector;
{$APPTYPE CONSOLE}
uses UnitDynamicVector in 'UnitDynamicVector.pas',
     UnitNumber in 'UnitNumber.pas',
     UnitWhole in 'UnitWhole.pas',
     UnitRational in 'UnitRational.pas',
     UnitRGBColor in 'UnitRGBColor.pas';
procedure Test(v1, v2: DynamicVector);
var v3, v4: DynamicVector; p: Number;
begin
  WriteLn('v1: '+v1.AsString); WriteLn('v2: '+v2.AsString);
  v1.SetDim(5); WriteLn('v1 after v1.SetDim(5): '+v1.AsString);
  v2.SetDim(5); WriteLn('v2 after v2.SetDim(5): '+v2.AsString);
  v3:=v1.Plus(v2); WriteLn('v3 after v3:=v1.Plus(v2): '+v3.AsString);
  v1.Add(v2); WriteLn('v1 after v1.Add(v2): '+v1.AsString);
  if v1.IsEqual(v3)
     then WriteLn('v1 is equal to v3')
     else WriteLn('v1 is not equal to v3');
  v4:=DynamicVector.CreateOfType(v2.GetCompType); v4.SetDim(5);
  v4.Assign(v2); WriteLn('v4 after v4.Assign(v2): '+v4.AsString);
  v4.Subtract(v1);
  WriteLn('v2 after v4.Subtract(v1): '+v2.AsString);
  WriteLn('v4 after v4.Subtract(v1): '+v4.AsString);
  p:=v2.ScalarProduct(v4);
  WriteLn('v2.ScalarProduct(v4): '+p.AsString);
  p.Destroy; v3.Destroy; v4.Destroy;
end;
var v1, v2: DynamicVector;
    w: Whole; r: Rational; c: RGBColor; i: Integer;
begin
  v1:=DynamicVector.CreateOfType(Whole); v1.SetDim(9);
  v2:=DynamicVector.CreateOfType(Whole); v2.SetDim(7);
  w:=Whole.Create;
  for i:=1 to 9 do begin w.SetValue(i); v1.SetComp(i, w); end;
  for i:=1 to 7 do begin w.SetValue(i+1); v2.SetComp(i, w); end;
  Test(v1, v2);
  w.Destroy; v1.Destroy; v2.Destroy; WriteLn;
  v1:=DynamicVector.CreateOfType(Rational); v1.SetDim(9);
  v2:=DynamicVector.CreateOfType(Rational); v2.SetDim(7);
  r:=Rational.Create;
  for i:=1 to 9 do begin
    r.SetNum(i); r.SetDen(i+1); v1.SetComp(i, r);
  end;



                                    65