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

UptoLike

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

54
if not(result.comp[i] is result.comptype)
then raise Exception.Create('Invalid Operation');
// результат работы метода Minus должен иметь требуемый тип
end;
end
else raise Exception.Create('Invalid Operation');
end;
procedure DynamicVector.Add(v: DynamicVector);
var i: Integer;
begin
if Length(self.comp)=Length(v.comp) then
for i:=0 to Length(self.comp)-1 do self.comp[i].Add(v.comp[i])
else raise Exception.Create('Invalid Operation');
end;
procedure DynamicVector.Subtract(v: DynamicVector);
var i: Integer;
begin
if Length(self.comp)=Length(v.comp) then
for i:=0 to Length(self.comp)-1 do self.comp[i].Subtract(v.comp[i])
else raise Exception.Create('Invalid Operation');
end;
function DynamicVector.ScalarProduct(v: DynamicVector): Number;
var i: Integer; temp: Number;
begin
if Length(self.comp)=Length(v.comp)
then begin
result:=self.comptype.Create;
for i:=0 to Length(self.comp)-1 do begin
temp:=self.comp[i].Dot(v.comp[i]); // приведение типа удалено
result.Add(temp);
temp.Destroy;
end;
end
else raise Exception.Create('Invalid Operation');
end;
function DynamicVector.IsEqual(v: DynamicVector): Boolean;
var i: Integer;
begin
if Length(self.comp)=Length(v.comp) then begin
result:=true;
for i:=0 to Length(self.comp)-1 do
if not(self.comp[i].IsEqual(v.comp[i])) then result:=false;
end
else result:=false;
end;
       if not(result.comp[i] is result.comptype)
          then raise Exception.Create('Invalid Operation');
       // результат работы метода Minus должен иметь требуемый тип
     end;
  end
  else raise Exception.Create('Invalid Operation');
end;
procedure DynamicVector.Add(v: DynamicVector);
var i: Integer;
begin
  if Length(self.comp)=Length(v.comp) then
     for i:=0 to Length(self.comp)-1 do self.comp[i].Add(v.comp[i])
     else raise Exception.Create('Invalid Operation');
end;
procedure DynamicVector.Subtract(v: DynamicVector);
var i: Integer;
begin
  if Length(self.comp)=Length(v.comp) then
     for i:=0 to Length(self.comp)-1 do self.comp[i].Subtract(v.comp[i])
     else raise Exception.Create('Invalid Operation');
end;
function DynamicVector.ScalarProduct(v: DynamicVector): Number;
var i: Integer; temp: Number;
begin
  if Length(self.comp)=Length(v.comp)
     then begin
       result:=self.comptype.Create;
       for i:=0 to Length(self.comp)-1 do begin
         temp:=self.comp[i].Dot(v.comp[i]); // приведение типа удалено
         result.Add(temp);
         temp.Destroy;
       end;
     end
     else raise Exception.Create('Invalid Operation');
end;
function DynamicVector.IsEqual(v: DynamicVector): Boolean;
var i: Integer;
begin
  if Length(self.comp)=Length(v.comp) then begin
     result:=true;
     for i:=0 to Length(self.comp)-1 do
       if not(self.comp[i].IsEqual(v.comp[i])) then result:=false;
  end
  else result:=false;
end;




                                  54