Помогите пожалуйста вызвать функции в теле программы. Сами функции прописаны, на них компилятор не возмущается.
Создать класс вектор на плоскости. Создать конструкторы и деструктор, генератор копий.
Определить операции:
"+" - сумма векторов;
"-" - разность векторов;
"*" - скалярное произведение;
"=" - присвоение;
"<" - угол между векторами.
вывести вектора на єкран
C++ |
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
| //---------------------------------------------------------------------------
#pragma hdrstop
#include<iostream>
#include<math.h>
using namespace std;
class Vector
{
double *vect; // Вектор
int size; // Размерность вектора
public:
Vector(); // Конструктор по умолчанию
explicit Vector(int); // Конструктор, позволяющий задавать
// размерность вектора, но не являющийся
// конструктором преобразования
Vector(const double*, int); // Конструктор, позволяющий
// проинициализировать вектор с помощью
// существующего массива
Vector(const Vector&); // Конструктор копирования
~Vector(); // Деструктор
Vector& operator = (const Vector&); // Перегруженный оператор присваивания
Vector& operator + (); // Перегруженный оператор + (унарный)
Vector operator - (); // Перегруженный оператор - (унарный)
Vector operator + (const Vector&); // Сложение двух векторов
double operator * (const Vector&); // Умножение векторов
// Ввод вектора с клавиатуры
friend istream& operator >> (istream&, Vector&);
// Вывод вектора на экран
friend ostream& operator << (ostream&, Vector&);
int GetSize(); // Функция возвращает размерность вектора
};
//--------------------------------------------------------
Vector::Vector()
{ // Конструктор по умолчанию
int n;
cout << "Input array size:\t";
cin >> n; // Запрос размерности вектора
while(n <= 0) // Проверка корректности ввода
{
cout << "Input array size:\t";
cin >> n;
}
size = n;
vect = new double[size]; // Создание вектора заданной длины
}
Vector::Vector(int n)
{
size = n;
vect = new double[size]; // Создание вектора заданной длины
}
Vector::Vector(const double* v, int n)
{
size = n;
vect = new double[size];
for(int i = 0; i < size; i++)// Копирование элементов переданного массива
vect[i] = v[i]; // в компоненты вектора
}
Vector::Vector(const Vector& v)
{ // Конструктор копирования
size = v.size;
vect = new double[size];
for(int i = 0; i < size; i++)
vect[i] = v.vect[i];
}
Vector::~Vector()
{ // Деструктор
delete [] vect;
}
Vector& Vector::operator = (const Vector& v)
{ // Перегруженный оператор присваивания
if(&v == this) // Проверка на присваивание объекта
return *this; // самому себе
// Если передан другой объект, то копируем его
delete [] vect;
size = v.size;
vect = new double[size];
for(int i = 0; i < size; i++)
vect[i] = v.vect[i];
return *this;
}
istream& operator >> (istream& is, Vector& v)
{ // Ввод компонент вектора с клавиатуры
for(int i = 0; i < v.size; i++)
{
cout << "Input vect[" << i << "]:\t";
is >> v.vect[i];
}
return is;
}
ostream& operator << (ostream& os, Vector& v)
{ // Вывод вектора на экран
os << "Vector: (";
for(int i = 0; i < v.size; i++)
{
os << v.vect[i];
if(i == v.size - 1)
os << ")\n";
else
os << ", ";
}
return os;
}
Vector& Vector::operator + ()
{ // Перегруженный унарный +
return *this;
}
Vector Vector::operator - ()
{ // Перегруженный унарный -
Vector temp(*this); // Создание временного объекта и
// инициализация его текущим объектом
// (объектом, для которого вызвалась функция)
for(int i = 0; i < size; i++)
temp.vect[i] = -vect[i];
return temp; // Возврат временного объекта
}
Vector Vector::operator + (const Vector& v)
{ // Сложение двух векторов с помощью
// перегруженного оператора бинарный +
if(size == v.size) // Если размерности векторов совпадают
{
Vector temp(size); // Создание временного объекта
for(int i = 0; i < size; i++)
temp.vect[i] = vect[i] + v.vect[i];
return temp; // Возврат временного объекта
}
else // Если размерности векторов не совпадают
{
cout << "Different arrays sizes !!!\nArray is truncating...\n";
// Урезаем размерность большего вектора
int s = (size < v.size) ? size : v.size;
Vector temp(s); // Создание временного объекта
for(int i = 0; i < s; i++)
temp.vect[i] = vect[i] + v.vect[i];
return temp; // Возврат временного объекта
}
}
double Vector::operator * (const Vector& v)
{ // Умножение двух векторов с помощью
// перегруженного оператора бинарное *
double n = 0.0;
if(size == v.size) // Если размерности векторов совпадают
{
for(int i = 0; i < size; i++)
n += vect[i] * v.vect[i]; // Вычисляем произведение
return n; // Возвращаем произведение
}
else // Если размерности векторов не совпадают
{
cout << "Different arrays sizes !!!\nArray is truncating...\n";
// Урезаем размерность большего вектора
int s = (size < v.size) ? size : v.size;
for(int i = 0; i < s; i++)
n += vect[i] * v.vect[i]; // Вычисляем произведение
return n; // Возвращаем произведение
}
}
int Vector::GetSize()
{ // Функция, возвращающая размерность вектора
return size;
}
// ---------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
Vector v(4); // Создание вектора
cin >> v; // Ввод компонент вектора
cout << 46346<< endl;
system("pause");
return 0;
} |
|