ВУЗ:
Составители:
Рубрика:
46
function IsEqual (v: DynamicRVector): Boolean;
procedure Add (v: DynamicRVector);
procedure Subtract(v: DynamicRVector);
procedure Assign (v: DynamicRVector);
function GetLength: Real;
function GetComp(i: Integer): Rational;
procedure SetComp(i: Integer; value: Rational);
function GetDim: Integer;
procedure SetDim(value: Integer);
function AsString: String;
constructor Create;
destructor Destroy; override;
end;
implementation
uses SysUtils;
// Здесь размещается реализация методов,
// приведенная в примерах 2.4.1 - 2.4.4.
end.
8. Теперь , создавая вектор , мы должны не только вызывать конс т-
руктор класса DynamicRVector, но и обязательно задавать его размер-
ность с помощью метода SetDim. Кроме того, необходимо следить за
тем , чтобы вектор , передаваемый в качестве параметра какому-либо м е -
тоду нашего класса, имел ту же размерность, что и вектор , для которого
данный метод вызван. Такова плата за универсальность решения.
Модифицированный соответствующим образом код программы с
дополнительной демонстрацией корректности работы процедуры SetDim
при уменьшении размерности содержит
Пример 2.4.6. Демонстрационная программа для класса DynamicRVector.
program TestDynamicRVector;
{$APPTYPE CONSOLE}
uses UnitDynamicRVector in 'UnitDynamicRVector.pas',
UnitRational in 'UnitRational.pas';
var v1, v2, v3, v4: DynamicRVector; r, p: Rational; i: Integer;
begin
v1:=DynamicRVector.Create; v2:=DynamicRVector.Create;
r:=Rational.Create;
v1.SetDim(9); // сначала создаются векторы различной размерности
for i:=1 to 9 do begin
r.SetNum(i); r.SetDen(i+1); v1.SetComp(i, r);
end;
function IsEqual (v: DynamicRVector): Boolean;
procedure Add (v: DynamicRVector);
procedure Subtract(v: DynamicRVector);
procedure Assign (v: DynamicRVector);
function GetLength: Real;
function GetComp(i: Integer): Rational;
procedure SetComp(i: Integer; value: Rational);
function GetDim: Integer;
procedure SetDim(value: Integer);
function AsString: String;
constructor Create;
destructor Destroy; override;
end;
implementation
uses SysUtils;
// Здесь размещается реализация методов,
// приведенная в примерах 2.4.1 - 2.4.4.
end.
8. Теперь , с оз д ав ая в ектор, м ы д ол жны не тол ь ков ы з ы в ат ь конс т -
руктор кл ас с а DynamicRVector, но и обяз ат ел ь но з ад ав ат ь его раз м ер-
нос т ь с пом ощ ь ю м етод а SetDim. Кром е того, необход им о с л ед ит ь з а
т ем , чтобы в ектор, перед ав аем ы й в качес т в е парам ет ра каком у-л ибом е-
тод у нашегокл ас с а, им ел т у же раз м ернос т ь , чтои в ектор, д л я которого
д анны й м етод в ы з в ан. Т аков а пл ат а з а унив ерс ал ь нос т ь решения.
М од ифиц иров анны й с оот в ет с т в ующ им образ ом код програм м ы с
д опол нит ел ь ной д ем онс т рац ией коррект нос т и работ ы проц ед уры SetDim
при ум ень шении раз м ернос т и с од ержит
Пример2.4.6. Дем онс т рац ионная програм м а д л я кл ас с а DynamicRVector.
program TestDynamicRVector;
{$APPTYPE CONSOLE}
uses UnitDynamicRVector in 'UnitDynamicRVector.pas',
UnitRational in 'UnitRational.pas';
var v1, v2, v3, v4: DynamicRVector; r, p: Rational; i: Integer;
begin
v1:=DynamicRVector.Create; v2:=DynamicRVector.Create;
r:=Rational.Create;
v1.SetDim(9); // сначала создаются векторы различной размерности
for i:=1 to 9 do begin
r.SetNum(i); r.SetDen(i+1); v1.SetComp(i, r);
end;
46
Страницы
- « первая
- ‹ предыдущая
- …
- 44
- 45
- 46
- 47
- 48
- …
- следующая ›
- последняя »
