Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 29.10.2021, 21:28   #1 (permalink)
Арслан1536
Новичок
 
Регистрация: 29.10.2021
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Процедура вычитания векторов

Помогите вставить сюда процедуру вычитания векторов

unit UnitVectors;

interface

uses
Classes, SysUtils;

type
TVector = class
private
FElements:array of real;
function GetCount:integer;
function GetElements(index:integer):real;
function GetNorma:real;// выдает длину ветора (здесь длина это длина)
procedure SetElements(index:integer;AValue:real);
public
constructor Create; overload; //создает нулевой вектор днины=0 (здесь длина это кол-во элементов)
constructor Create(ALen:integer); overload; //создает не заполненный вектор днины=ALen (здесь длина это кол-во элементов)
constructor Create(AValue:TVector); overload;//создает копию вектора AValue
procedure Add(AValue:TVector);// сумма векторов
procedure MulToNumber(value:real);// умножает вектор на число value
function Dotproduct(AValue:TVector): real;// скалярное произведение на вектор AValue

property Elements[index:integer]:real read GetElements write SetElements;
property Count:integer read GetCount;
property Norma:real read GetNorma;
end;

implementation
function TVector.GetCount:integer;
begin
Result:=Length(FElements);
end;
function TVector.GetElements(index:integer):real;
begin
Assert((index >= 0) and (index < Length(FElements)), 'Invalid index');
Result:=FElements[index];
end;
procedure TVector.Add(AValue:TVector);// сумма векторов
var i:integer;
begin
Assert(Count = AValue.Count, 'Invalid vector');
for i:=0 to AValue.Count-1 do
Elements[i]:=Elements[i]+AValue.Elements[i];
end;
function TVector.GetNorma:real;
var p:real;
i:integer;
begin
p:=0;
for i:=0 to Count-1 do
p:=p+(Elements[i]*Elements[i]);
Result:=sqrt(p);
end;
procedure TVector.SetElements(index:integer;AValue:real);
begin
Assert((index >= 0) and (index < Length(FElements)), 'Invalid index');
FElements[index]:=AValue;
end;
constructor TVector.Create; overload;
begin
inherited Create;
end;
constructor TVector.Create(ALen:integer); overload;
begin
Create;
SetLength(FElements,ALen);
end;
constructor TVector.Create(AValue:TVector); overload;
var i:integer;
begin
Assert(Assigned(AValue), 'Empty vector');
SetLength(FElements,AValue.Count);
for i:=0 to AValue.Count-1 do
Elements[i]:=AValue.Elements[i];
end;
procedure TVector.MulToNumber(value:real);
var
i:integer;
begin
for i:=0 to Count-1 do
Elements[i]:=Elements[i]*value;
end;
function TVector.Dotproduct(AValue:TVector): real;
var p:real;
i:integer;
begin
Assert(Assigned(AValue), 'Empty vector');
Assert(Count = AValue.Count, 'Invalid vector');
p:=0;
for i:=0 to Count-1 do
p:=p+Elements[i]*AValue.Elements[i];
Result:=p;

end;
end.
Арслан1536 вне форума   Ответить с цитированием

Старый 29.10.2021, 21:28
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Прочитайте похожие темы, это не сложно

Списки точек и векторов
Pascal процедура
Процедура, Паскаль
Процедура

Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 13:05.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.