Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 09.04.2014, 16:34   #1
Zaraaa
Пользователь
 
Регистрация: 19.04.2013
Сообщений: 83
По умолчанию Сложение и умножение векторов

программа высчитывает скалярное произв векторов, а как можно осуществить код для сложения и умножения векторов, помогите пожалуйста на делфи сделать
Код:
type
  TVecArray = array of Double;
 
  TForm1 = class(TForm)
    LabeledEdit1: TLabeledEdit;
    LabeledEdit2: TLabeledEdit;
    LabeledEdit3: TLabeledEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    LabeledEdit4: TLabeledEdit;
    LabeledEdit5: TLabeledEdit;
    LabeledEdit6: TLabeledEdit;
    LabeledEdit7: TLabeledEdit;
    LabeledEdit8: TLabeledEdit;
    LabeledEdit9: TLabeledEdit;
    LabeledEdit10: TLabeledEdit;
    LabeledEdit11: TLabeledEdit;
    LabeledEdit12: TLabeledEdit;
    Button1: TButton;
    LabeledEdit13: TLabeledEdit;
    LabeledEdit14: TLabeledEdit;
    Label7: TLabel;
    procedure Button1Click(Sender: TObject);
  private
  function Summ(A, B: TVecArray): Double;
    { Private declarations }
  public
    { Public declarations }
  end;
 
// Подсчет скалярного произведения
function DotProduct(A, B: TVecArray): Double;
// Среднее арифметическое
function ArithmeticMean(A: TVecArray):Double;
// Среднее геометрическое ПОЛОЖИТЕЛЬНЫХ элементов массива
// (если их нет возвращается -1)
function GeometricMean(A: TVecArray): Double;
 
var
  Form1: TForm1;
  x, y, z, p: TVecArray;
  xy, zp: Double;
 
implementation
 
{$R *.dfm}
 
// Подсчет скалярного произведения
function DotProduct(A, B: TVecArray): Double;
var
  i: integer;
begin
  Result := 0;
  for i := Low(A) to High(A) do
    Result := Result + A[i]*B[i];
end;
 
// Среднее арифметическое
function ArithmeticMean(A: TVecArray):Double;
var
  i: Integer;
  sum: Double;
begin
  sum := 0;
  for i := Low(A) to High(A) do
    sum := A[i] + sum;
  Result := sum/Length(A);
end;
 
// Среднее геометрическое ПОЛОЖИТЕЛЬНЫХ элементов массива
// (если их нет возвращается -1)
function GeometricMean(A: TVecArray): Double;
var
  i, n: Integer;
  mult: Double;
begin
  mult := 1;
  n := 0;
  for i := Low(A) to High(A) do
    if A[i] > 0 then
    begin
      mult := A[i]*mult;  // Произведение положительных элементов
      inc(n);
    end;
  if n > 0 then Result := exp( (1/n) * Ln(mult))     // Нахождение корня n-й степени из произведения
    else Result := -1;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  SetLength(x, 3);
  // Заполняем вектор x
  x[0] := StrToFloat(LabeledEdit1.Text);
  x[1] := StrToFloat(LabeledEdit2.Text);
  x[2] := StrToFloat(LabeledEdit3.Text);
 
  SetLength(y, 3);
  // Заполняем вектор y
  y[0] := StrToFloat(LabeledEdit4.Text);
  y[1] := StrToFloat(LabeledEdit5.Text);
  y[2] := StrToFloat(LabeledEdit6.Text);
 
  SetLength(z, 4);
  // Заполняем вектор z
  z[0] := StrToFloat(LabeledEdit7.Text);
  z[1] := StrToFloat(LabeledEdit8.Text);
  z[2] := StrToFloat(LabeledEdit9.Text);
  z[3] := StrToFloat(LabeledEdit10.Text);
 
  SetLength(p, 4);
  // Заполняем вектор p
  p[0] := StrToFloat(LabeledEdit11.Text);
  p[1] := StrToFloat(LabeledEdit12.Text);
  p[2] := StrToFloat(LabeledEdit13.Text);
  p[3] := StrToFloat(LabeledEdit14.Text);
 
  // Расчет произведений
  xy := DotProduct(x, y);
  zp := DotProduct(z, p);
 
  Label5.Caption := Format('(X, Y) = %.3f', [xy]);
  Label6.Caption := Format('(Z, P) = %.3f', [zp]);
 
 
end;
Zaraaa вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложение двух векторов Shkolota Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 14.05.2013 22:02
Сложение и умножение korzunmaria Помощь студентам 3 20.05.2010 20:07
Сложение и умножение korzunmaria Паскаль, Turbo Pascal, PascalABC.NET 3 20.05.2010 19:01
Ввод векторов и матриц, умножение матрицы на вектор и вычисление скалярного призведения двух векторов zverushka Помощь студентам 18 20.02.2009 16:25


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS