Задача. Найти объём параллелепипеда три стороны которого образованы векторами [latex] \overrightarrow{a}=(a_x,a_y,a_z),[/latex] [latex]\overrightarrow{b}=(b_x,b_y,b_z)[/latex] и [latex]\overrightarrow{c}=(c_x,c_y,c_z).[/latex]
Входные данные: Координаты векторов [latex]\overrightarrow{a},[/latex] [latex] \overrightarrow{b},[/latex] [latex]\overrightarrow{c}. [/latex]
Выходные данные: Объём параллелепипеда.
Тесты
Входные данные | Выходные данные |
0 0 1 0 1 0 1 0 0 | 1 |
0 0 0 1 0 0 0 0 1 | 0 |
1 0 0 0 0 1 0 0 1 | 0 |
2 5 3 4 1 0 -2 7 6 | 18 |
3 5 1 0 -7 2 6 -4 5 | 21 |
Код программы
1 2 3 4 5 6 7 8 9 10 11 |
#include <iostream> #include <cmath> using namespace std; int main() { double ax, ay, az, bx, by, bz, cx, cy, cz, V, V1; cin >> ax >> ay >> az >> bx >> by >> bz >> cx >> cy >> cz; //Ввод координат векторов. V = (ax*((by*cz)+(cy*bz)))-ay*((bx*cz)+(cx*bz))+az*((bx*cy)+(cx*by)); //Вычисление объёма. cout << abs(V); //Выводим модуль значения определителя. return 0; } |
Решение
Для решения данной задачи можно составить матрицу и вывести из неё формулу для нахождения определителя:
[latex]\triangle = \begin{vmatrix}a_x & a_y & a_z \\ b_x & b_y & b_z \\ c_x & c_y & c_z\end{vmatrix} =[/latex] [latex] a_x \left(b_y c_z+c_y b_z\right)[/latex] [latex]-a_y \left(b_x c_z+c_x b_z\right)+[/latex] [latex]a_z\left(b_x c_y+c_x b_y\right).[/latex]
Модуль определителя матрицы равен объёму параллелепипеда.
Очень рад, что Вам удалось начать делать первое задание. Жаль, что ушло целых два месяца на то, чтобы решиться.
— Почему координаты могут быть только целыми числами?
— А отступы будут?
— Звёздочкой во многих языках программирования обозначают умножение. Но не в математике.
— Нужно проставить рубрику и указать ключевые слова (метки).
— Не нужно показывать пользователю бессмысленный для него текст типа MxWgEW.
— Задание на линейные вычисления не должно использовать условных операторов. Вполне достаточно вызвать функцию abs().
Спасибо. Исправила.