Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 25.09.2014
Сообщений: 7

Организовать производный класс, содержащий метод нахождения векторного произведения

27.10.2014, 07:45. Показов 1702. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возникли сложности при решении задачи. Буду признателен тем, кто поможет.
Задание:
Изменить программу предыдущего задания, организовав на основе существующего класса производственный класс. Продемонстрируйте работу всех методов базового и производственного классов.
Вариант:
Организовать производственный класс, содержащий метод нахождения векторного произведения.

Программа предыдущего задания:
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
#include <stdlib.h> 
#include <iostream> 
#include <math.h> 
using namespace std; 
 
class XYZVector 
{
public:
        
    XYZVector(): _x(0), _y(0), _z(0) {}
    XYZVector(int curX, int curY, int curZ) : _x(curX), _y(curY), _z(curZ) {}
    XYZVector(const XYZVector &original) : _x(original.x()), _y(original.y()), _z(original.z()) {}
    double length() const { return sqrt(_x * _x + _y * _y + _z * _z); }
    int x() const { return _x; }
    int y() const { return _y; }
    int z() const { return _z; }
private:
    int _x, _y, _z;
};
 
int main()
    {
        XYZVector V1; 
        XYZVector V2(5, 7, 2); 
        XYZVector V3(V1); 
        cout << "V1 (Coords) = " << V1.x() << ' ' << V1.y() << ' ' << V1.z() << ' ' << endl;
        cout << "V2 (Coords) = " << V2.x() << ' ' << V2.y() << ' ' << V2.z() << ' ' << endl;
        cout << "V3 (Coords) = " << V3.x() << ' ' << V3.y() << ' ' << V3.z() << ' ' << endl;
        cout << endl;
        cout << "V1 (Length) = " << V1.length() << endl;
        cout << "V2 (Length) = " << V2.length() << endl;
        cout << "V3 (Length) = " << V3.length() << endl;
        
        system("pause");
        return 0;
    }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.10.2014, 07:45
Ответы с готовыми решениями:

Организовать производный класс, содержащий функции вычисления деления и умножения дробей
Организовать производный класс, содержащий функции вычисления деления и умножения дробей, функцию приведения дроби к несократимому виду. ...

Организовать производный класс, содержащий функции вычисления сложения и вычитания дробей, исходники есть
проблема в нехватке опыта в программировании, программу с быделением целой части из дроби я слобал. #include &lt;iostream&gt; ...

Организовать класс треугольник определенный по 3-ем сторонам содержащий методы нахождения периметра и площади(По формуле герона)
Помогите написать прогу:wall: Организовать класс треугольник определенный по 3-ем сторонам содержащий методы нахождения периметра и...

5
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
27.10.2014, 08:03
Какие сложности возникли?
0
0 / 0 / 0
Регистрация: 25.09.2014
Сообщений: 7
29.10.2014, 06:15  [ТС]
Не получается изменить ниже написанную программу в соответствии с заданием, компилятор выдает ошибку
0
11 / 11 / 1
Регистрация: 14.07.2014
Сообщений: 186
29.10.2014, 10:49
чекни..

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
#include <stdlib.h>
#include <iostream>
#include <math.h>
using namespace std;
 
class XYZVector
{
public:
 
    XYZVector(): _x(0), _y(0), _z(0) {}
    XYZVector(int curX, int curY, int curZ) : _x(curX), _y(curY), _z(curZ) {}
    XYZVector(const XYZVector &original) : _x(original.x()), _y(original.y()), _z(original.z()) {}
    double length() const { return sqrt(_x * _x + _y * _y + _z * _z); }
    int x() const { return _x; }
    int y() const { return _y; }
    int z() const { return _z; }
private:
    int _x, _y, _z;
};
 
 
class V_mult : public XYZVector   // Производный класс
{
public:
    V_mult (XYZVector v1, XYZVector v2, XYZVector v3);
    double x ,y, z;
 
};
 
V_mult::V_mult (XYZVector v1, XYZVector v2, XYZVector v3)
{
    x =         (v1.z()*v2.x() - v1.x()*v2.z())*v3.z() -
                (v1.x()*v2.y() - v1.y()*v2.x())*v3.y();
    y =         -((v1.x()*v2.y() - v1.y()*v2.x())*v3.x() -
                (v1.y()*v2.z() - v1.z()*v2.y())*v3.z());
    z =         (v1.y()*v2.z() - v1.z()*v2.y())*v3.y() -
                (v1.z()*v2.x() - v1.x()*v2.z())*v3.x();
}
 
int main()
    {
        XYZVector V1 (1, 3, 6);
        XYZVector V2(5, 7, 2);
        XYZVector V3(V1);
        V_mult vec_mult(V1,V2,V3);
        cout << "V1 (Coords) = " << V1.x() << ' ' << V1.y() << ' ' << V1.z() << ' ' << endl;
        cout << "V2 (Coords) = " << V2.x() << ' ' << V2.y() << ' ' << V2.z() << ' ' << endl;
        cout << "V3 (Coords) = " << V3.x() << ' ' << V3.y() << ' ' << V3.z() << ' ' << endl;
        cout << endl;
        cout << "V1 (Length) = " << V1.length() << endl;
        cout << "V2 (Length) = " << V2.length() << endl;
        cout << "V3 (Length) = " << V3.length() << endl;
        cout << "Vector product:" <<endl;
        cout << "i = " << vec_mult.x << " j = " << vec_mult.y << " k = " << vec_mult.z << endl;
 
 
        system("pause");
        return 0;
    }
1
0 / 0 / 0
Регистрация: 25.09.2014
Сообщений: 7
30.10.2014, 06:47  [ТС]
Все вроде бы неплохо, компилятор ошибок не выдает, но нужно чтобы векторов было двое, а не трое и через третий вектор выводилось, так получается смешанная
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
30.10.2014, 09:03
Лучший ответ Сообщение было отмечено Denzelrus как решение

Решение

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
#include <iostream>
#include <cmath>
//#include <sstream>
using namespace std;
class XYZVector
{
public:
 
    XYZVector(): _x(0), _y(0), _z(0) {}
    XYZVector(double curX, double curY, double curZ) : _x(curX), _y(curY), _z(curZ) {}
    double length() const { return sqrt(_x * _x + _y * _y + _z * _z); }
    double x() const { return _x; }
    double y() const { return _y; }
    double z() const { return _z; }
protected:
    double _x, _y, _z;
};
 
 
class V_mult : public XYZVector   // Производный класс
{
public:
    V_mult():XYZVector(){}
    V_mult(double curX, double curY, double curZ) : XYZVector(curX,curY,curZ) {}
    V_mult operator*(const V_mult V2); // Перегруженный оператор произведения
 
};
 
V_mult V_mult::operator*(const V_mult b)
{
    V_mult Res;
    Res._x = y()*b.z() - z()*b.y();
    Res._y = z()*b.x() - x()*b.z();
    Res._z = x()*b.y() - y()*b.x();
    return Res;
}
 
int main()
{
        V_mult V1 (1.5, 3.5, 6.5);
        V_mult V2(5.5, 7.5, 2.5);
        V_mult V3=V1*V2;
        cout << "V1 (Coords) = " << V1.x() << ' ' << V1.y() << ' ' << V1.z() << ' ' << endl;
        cout << "V2 (Coords) = " << V2.x() << ' ' << V2.y() << ' ' << V2.z() << ' ' << endl;
        cout << "V3 (Coords) = " << V3.x() << ' ' << V3.y() << ' ' << V3.z() << ' ' << endl;
        cout << endl;
        cout << "V1 (Length) = " << V1.length() << endl;
        cout << "V2 (Length) = " << V2.length() << endl;
        cout << "V3 (Length) = " << V3.length() << endl;
 
        system("pause");
        return 0;
    }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.10.2014, 09:03
Помогаю со студенческими работами здесь

Определить ф-цию, нахождения векторного произведения векторов трёхмерного пространства
Определить ф-цию, нахождения векторного произведения векторов трёхмерного пространства(без массивов). Параметрами ф-ции должны быть...

Класс: Дописать производный класс, дополняющий базовый и содержащий минимум 2 функции-члена...
Составьте программу на языке С#, которая должна содержать: 1) базовый класс в соответствии с вариантом; 2) производный класс,...

C++,QT, класс векторного произведения. Не компилируется
РЕбят, нужно создать класс для вычисления векторного произведения двух векторов. Написал код, не пойму в чем ошибка, пишу на QT. ,...

Организовать производный класс
Помогите пожалуйста!!! Организовать производный класс, наследующий все свойства базового и дополнительный методы нахождения скалярного...

Реализовать класс Vector и перегруженные операции сложения (+), скалярного (%) и векторного (*) произведения
Создайте класс Vector (вектор), включающий поля: координаты вектора. Реализуйте методы вывода вектора и вычисления длины вектора....


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru