Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- int main () {
- setlocale(LC_ALL, "Russian");
- setlocale(LC_ALL, "ru_RU.UTF-8");
- setlocale(LC_ALL, "");
- {
- // Классы. Продолжение
- class Point3D { // Класс трёхмерной точки
- public:
- double x;
- double y;
- double z;
- Point3D() { // Конструктор класса трёхмерной точки
- // Производится инициализации нулевыми значениями переменных класса
- x = 0;
- y = 0;
- z = 0;
- }
- };
- class Vector3D { // Класс трёхмерного вектора
- public:
- Point3D start_point, end_point, vector_coords;
- Vector3D() { // Конструктор класса трёхмерного вектора
- input(); // Ввод данных
- }
- void vector_update() { // Обновление параметров точек start_point и end_point
- cout << "Обновление координат точек вектора." << endl;
- input(); // Ввод данных
- }
- double vector_length() { // Возвращает длину вектора
- return sqrt(pow(vector_coords.x, 2) + pow(vector_coords.y, 2) + pow(vector_coords.z, 2));
- }
- private: // Приватные методы и переменные класса
- Point3D get_coords() { // Получение координат трёхмерного вектора
- Point3D vect_coords;
- vect_coords.x = end_point.x - start_point.x;
- vect_coords.y = end_point.y - start_point.y;
- vect_coords.z = end_point.z - start_point.z;
- return vect_coords;
- }
- void input() { // Ввод данных точек вектора
- // Осуществляется ввод координат начальной и конечной точки вектора
- cout << "Введите координаты точки начала вектора (формат: X, Y, Z): ";
- cin >> start_point.x >> start_point.y >> start_point.z;
- cout << "Введите координаты точки конца вектора (формат: X, Y, Z): ";
- cin >> end_point.x >> end_point.y >> end_point.z;
- vector_coords = get_coords();
- }
- };
- class VectorND { // Класс N-мерного вектора
- public:
- double *Start_Point, *End_Point, *Vect_Coords; // Указатели для двух точек и координат вектора
- int dimension;
- VectorND(int dim = 3) { // Конструктор класса N-мерного вектора
- // По умолчанию трёхмерный вектор
- dimension = dim;
- Start_Point = new double[dimension];
- End_Point = new double[dimension];
- Vect_Coords = new double[dimension];
- for (int i = 0; i < dimension; i++) { // Обнуляет точки
- Start_Point[i] = 0;
- End_Point[i] = 0;
- Vect_Coords[i] = 0;
- }
- }
- void InputData(int dim = 3) { // Ввод данных
- delete[] Start_Point, End_Point, Vect_Coords;
- dimension = dim;
- Start_Point = new double[dimension];
- End_Point = new double[dimension];
- Vect_Coords = new double[dimension];
- cout << "Введите координаты точки начала вектора (" << dimension << " параметров): ";
- for (int i = 0; i < dimension; i++) cin >> Start_Point[i];
- cout << "Введите координаты точки конца вектора (" << dimension << " параметров): ";
- for (int i = 0; i < dimension; i++) cin >> End_Point[i];
- Get_Coords();
- }
- ~VectorND() {
- delete[] Start_Point, End_Point, Vect_Coords;
- }
- double vector_length() { // Возвращает длину вектора
- double length = 0;
- for (int i = 0; i < dimension; i++) length = length + pow(Vect_Coords[i], 2);
- return sqrt(length);
- }
- void Get_Coords() { // Получение координат N-мерного вектора
- for (int i = 0; i < dimension; i++) {
- Vect_Coords[i] = End_Point[i] - Start_Point[i];
- }
- }
- VectorND operator + (VectorND operator2) { // Перегрузка оператора "+"
- VectorND temp(dimension);
- if (dimension == operator2.dimension) {
- for (int i = 0; i < dimension; i++) {
- temp.End_Point[i] = operator2.End_Point[i];
- temp.Get_Coords();
- }
- }
- else {
- for (int i = 0; i < dimension; i++) { // Обнуляет точки
- temp.Start_Point[i] = 0;
- temp.End_Point[i] = 0;
- temp.Vect_Coords[i] = 0;
- }
- }
- return temp;
- }
- VectorND operator = (VectorND operator2) { // Перегрузка оператора "="
- if (dimension == operator2.dimension) {
- for (int i = 0; i < dimension; i++) {
- Start_Point[i] = operator2.Start_Point[i];
- End_Point[i] = operator2.End_Point[i];
- Vect_Coords[i] = operator2.Vect_Coords[i];
- }
- }
- else {
- for (int i = 0; i < dimension; i++) { // Обнуляет точки
- this->Start_Point[i] = 0;
- this->End_Point[i] = 0;
- this->Vect_Coords[i] = 0;
- }
- }
- return *this;
- }
- };
- VectorND v1;
- VectorND v2;
- VectorND v3;
- v3 = v1 + v2;
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement