• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Процедура вычитания векторов

Арслан1536

Ученик
Регистрация
29 Окт 2021
Сообщения
1
Реакции
0
Баллы
0
Процедура вычитания векторов

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

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:=Elements+AValue.Elements;
end;
function TVector.GetNorma:real;
var p:real;
i:integer;
begin
p:=0;
for i:=0 to Count-1 do
p:=p+(Elements*Elements);
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:=AValue.Elements;
end;
procedure TVector.MulToNumber(value:real);
var
i:integer;
begin
for i:=0 to Count-1 do
Elements:=Elements*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*AValue.Elements;
Result:=p;

end;
end.
 
Назад
Сверху