2 / 2 / 0
Регистрация: 23.11.2014
Сообщений: 60
1

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

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

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

9.5. Создать класс вектор на плоскости, поля класса_координаты вектора.
Задача:
Методы класса: вычисление направляющих косинусов вектора, вывод всех характеристик вектора. В классе предусмотреть методы перегрузки операций: сложение, скалярное и векторное произведение векторов.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2014, 16:23
Ответы с готовыми решениями:

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

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

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

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

4
2 / 2 / 0
Регистрация: 23.11.2014
Сообщений: 60
24.12.2014, 15:24  [ТС] 2
ну пожалуйста! хоть что-нибудь у меня завтра зачет..
0
431 / 361 / 130
Регистрация: 09.09.2011
Сообщений: 1,318
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2014, 22:48
Помогаю со студенческими работами здесь

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

Скалярное и векторное произведения векторов
Добрый день, возник вопрос, связаны ли как-либо между собой скалярное и векторное произведения...

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru