Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lazarus
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Ананаско
2 / 2 / 0
Регистрация: 23.11.2014
Сообщений: 60
1

Сложение, скалярное и векторное произведение векторов

24.11.2014, 16:23. Просмотров 1170. Ответов 4
Метки нет (Все метки)

Разработать программу с интерфейсом в среде программирования Lazarus.

9.5. Создать класс вектор на плоскости, поля класса_координаты вектора.
Задача:
Методы класса: вычисление направляющих косинусов вектора, вывод всех характеристик вектора. В классе предусмотреть методы перегрузки операций: сложение, скалярное и векторное произведение векторов.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2014, 16:23
Ответы с готовыми решениями:

создание, сложение, вычитание векторов, скалярное и векторное умножение векторов
Есть задание по курсовой работе: надо разработать классы для реализации операций векторной...

Найти скалярное и векторное произведение векторов
Вот программка для операций над векторами, но почему-то не хочет работать, посмотрите плиз: ...

Как одновременно декларировать векторное и скалярное произведение векторов?
В обоих случаях умножается вектор на вектор. Нельзя же перегрузить по типу значения.

Найдите вектор х, зная скалярное и векторное произведение векторов х и к
Найдите вектор х зная, что скалярное произведение векторов х и к равно -3, а векторное...

Определить функцию работы с векторами: Сложение векторов, разность, умножение на скаляр,скалярное произведение векторов,вычисление длины вектора
с помощью фукнций map/ map-into / reduce определить функцию работы с векторами: Сложение векторов,...

4
Ананаско
2 / 2 / 0
Регистрация: 23.11.2014
Сообщений: 60
24.12.2014, 15:24  [ТС] 2
ну пожалуйста! хоть что-нибудь у меня завтра зачет..
0
Kitayets
351 / 304 / 106
Регистрация: 09.09.2011
Сообщений: 1,089
25.12.2014, 00:34 3
При такой постановке задачи - к завтрашнему зачету программы у Вас не будет, только если кто готовое даст...

Это задача не ядерная физика, но я не супер программист - оцениваю создание такой программы с отладкой/тестированием в 5 чел./часов.(моих человеко-часов ) из них 1 час на класс вектора со всеми алгоритмами и математикой и 4 часа на придумывание/реализацию/тестирования графического интерфейса. Я конечно люблю решать интересные задачки и помогать, но выкинуть просто так 5 часов жизни до завтра "ни за-что" не могу себе позволить и думаю что-то вряд-ли найдется кто-то другой...

Что касается самой программы -
есть ли хоть примерное описание графического интерфейса, и как оно должно примерно работать?

векторное и скалярное умножение - перегружаются одним оператором? если разными то какой оператор для скалярного умножения, а какой для векторного?
0
Ананаско
2 / 2 / 0
Регистрация: 23.11.2014
Сообщений: 60
25.12.2014, 10:46  [ТС] 4
Вот у меня есть пример этой задачи, может из нее что-нибудь получится?
Создать класс квадратная матрица, поля класса размерность и элементы матрицы. Методы класса: вычисление суммы всех элементов матрицы, вывод матрицы. В классе предусмотреть методы перегрузки операций: сложение, вычитание, умножение матриц, умножение матрицы на число.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
  type
TMatrix = class
 private
  x : array [0..5,0..5] of integer;
  n : integer;
 public
   constructor Create ;
   function MatrixSum (s:integer) :integer;
   function MatrixToStr ( ) :string ;
 end;
operator +(const a , b : TMatrix )r: Tmatrix ;
operator -(const a , b : TMatrix )r : TMatrix ;
operator *(const a , b : TMatrix ) r : Tmatrix ;
operator *( const a : TMatrix ; b : integer ) r : TMatrix ;
var
  Form1: TForm1;
  matr1 : TMatrix ;
  matr2 : TMatrix ;
  matr3 : TMatrix ;
  matr4 : TMatrix ;
  matr5 : TMatrix ;
  matr6 : TMatrix ;
 
implementation
 
constructor TMatrix . Create ;
var i , j : integer ;
begin
randomize;
for i :=0 to 4 do
for j :=0 to 4 do
x [ i , j ] :=Random(10) ;
inherited Create ;
end;
 
operator +(const a , b : TMatrix )r : TMatrix ;
var i , j : integer ;
begin
r :=TMatrix . Create ;
for i :=0 to 4 do
for j :=0 to 4 do
r.x [i,j] :=a.x [i,j]+b.x[i,j];
end;
 
operator -(const a , b : TMatrix )r : TMatrix ;
var i , j : integer ;
begin
r :=TMatrix . Create ;
for i :=0 to 4 do
for j :=0 to 4 do
r.x [i,j] :=a.x [i,j]-b.x[i,j];
end;
 
operator *( const a , b : TMatrix ) r : TMatrix ;
var i , j , k : integer ;
begin
r :=TMatrix . Create ;
for i :=0 to 4 do
for j :=0 to 4 do
begin
r.x[i,j]:=0 ;
for k:=0 to 4 do
r.x[i,j]:= r.x[i,j]+a.x[i,k]*b.x[k,j];
end;
end;
 
operator *( const a : TMatrix ; b : integer ) r : TMatrix ;
var i , j : integer ;
begin
r :=TMatrix . Create ;
for i :=0 to 4 do
for j :=0 to 4 do
r.x[i,j]:=a.x[i,j]*b ;
end;
{$R *.lfm}
 
{ TForm1 }
function TMatrix . MatrixToStr ( ) : String ;
var i , j : integer ;
  s:string;
begin
s:=' ';
for i :=0 to 4 do begin
for j :=0 to 4 do
s :=s+IntTostr ( x [ i , j ])+'    ';
s :=s+chr ( 13 ) ;end;
MatrixToStr :=s ;
end;
 
 
function TMatrix .MatrixSum (s:integer) : integer ;
var i,j: integer;
  begin
  s:=0;
  for i:=0 to 4 do begin
  for j:=0 to 4 do begin
  s:=s + x[i,j];
  end;
  end;
  end;
 
procedure TForm1.Button1Click(Sender: TObject);
Var Str1 : String ;
  sum,k:integer;
begin
matr1:=TMatrix . Create ;
matr2:=TMatrix . Create ;
matr3:=TMatrix . Create ;
matr4:=TMatrix . Create ;
matr5:=TMatrix . Create ;
matr6:=TMatrix . Create ;
matr3:=matr1+matr2 ;
matr4:=matr1-matr2 ;
matr5:=matr1*matr2 ;
matr6:=matr1*5 ;
Str1:='Матрица 1 '+chr(13)+matr1.MatrixToStr( );
Label1.Caption:=Str1 ;
Str1:='Сумма элементов матрицы = '+IntToStr(matr1.MatrixSum(sum));
Label7.Caption:=Str1;
Str1 :='Матрица 2'+chr(13)+matr2 . MatrixToStr ( ) ;
Label2 . Caption:= Str1 ;
Str1 :='Матрица 1+Матрица 2'+chr(13)+matr3 . MatrixToStr ( ) ;
Label3 . Caption:= Str1 ;
Str1 :='Матрица 1-Матрица 2'+chr(13)+matr4 . MatrixToStr ( ) ;
Label4 . Caption:= Str1 ;
Str1 :='Матрица 1*Матрица 2'+chr(13)+matr5 . MatrixToStr ( ) ;
Label5 . Caption:= Str1 ;
Str1 :='Матрица 1*5'+chr(13)+matr6 . MatrixToStr ( ) ;
Label6 . Caption:= Str1 ;
end;
end.
0
Ананаско
2 / 2 / 0
Регистрация: 23.11.2014
Сообщений: 60
25.12.2014, 22:48  [ТС] 5
Вот наработки, но надо как-то по нормальному сделать..!
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
var
  Form1: TForm1;
 
type T Vector = class
  protected
    Fx, Fy, Fz: double;
 
    function getLength: double;
  public
    constructor Create(aX, aY: double);
 
    procedure Add(vec: T2DVector);
    procedure Normalize;
 
    property X: Double read Fx write Fx;
    property Y: Double read Fy write Fy;
    property Length: Double: read getLength;
  end;
{$R *.lfm}
 
 
implementation
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
var
begin
AB = (bx-ax,by-ay,bz-az);
\\где A и B - 2 точки, A(ax,ay,az) и B(bx,by,bz), A - начало вектора, B - конец вектора.
a(ax,ay,az):=StrToInt(Edit1.Text);
b(bx,by,bz):=StrToInt(Edit2.Text);
|AB| = sqrt((bx-ax)2+(by+ay)2+(bz-az)2);
Label7.Caption:=  |AB|;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
cd = (dx-cx,dy-cy,dz-cz);
c(cx,cy,cz):=StrToInt(Edit3.Text);
d(bx,by,bz):=StrToInt(Edit4.Text);
|CD| = sqrt((dx-cx)2+(dy+cy)2+(dz-cz)2);
Label8.Caption:=  |CD|;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
   ab + cd = (bx-ax + bx-ax, by-ay + by+ay, bz-az + bz-az)
  Label10.Caption:=  ;
  Label9.Caption:=  ab+cd;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
  aB .cd = abxcdx + abycdy + abzcdz;
  Label11.Caption:=  ab .cd;
end;
 
procedure TForm1.Button6Click(Sender: TObject);
begin
cos О± =  (bx-ax)/ |AB|;
cos ОІ =  (by-ay)/ |AB|;
cos Оі =  (bz-az)/ |AB|;
Label117.Caption:=   cos О± ;
Label118.Caption:=   cos ОІ ;
Label119.Caption:=   cos Оі  ;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
cos О± =  (dx-cx)/ |CD|;
cos ОІ =  (dy-cy)/ |CD|;
cos Оі =  (dz-cz)/ |CD|;
Label114.Caption:=   cos О± ;
Label115.Caption:=   cos ОІ ;
Label116.Caption:=   cos Оі  ;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 
end;
0
Миниатюры
Сложение, скалярное и векторное произведение векторов  
25.12.2014, 22:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2014, 22:48

Скалярное произведение векторов, сложение матриц, транспонирование матриц
Необходимо составить что то вроде калькулятора с процедурами, что бы вычислял скалярное...

Решить векторное сложение 2 векторов
Помогите пожалуйста решить векторное сложение 2 векторов на php . Не могу справиться, нужно чтобы...

Векторное и Скалярное произведение
Есть прожка на Си котоорая вычисляет векторное и скалярное произведение трехмерных векторов.Нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru