root_777
Цитата:
Не моя специальность программы на СИшке писать - немного другой профиль. »
|
Хыы... Странно чёж за профессия у тебя, что такие задания дают? Где учишся кстати?
Ну вот мой вариант, может и слишком просто. Только для вектора в трёхмерном пространстве. Но как уж смог.
Код:
![Выделить весь код](images/misc/selectcode.png)
#include<math.h>
class vector
{
double x,y,z;
public:
vector(double vX=0, float vY=0, float vZ=0) { x=vX; y=vY; z=vZ; } // конструктор
~vector ();
friend vector operator+(vector a, vector b); //сложение векторов
friend vector operator-(vector a, vector b); //вычитание векторов
friend vector operator*(vector a, double scalar); //умножение вектора на скаляр
friend double operator*(vector a, vector b); //скалярное произведение векторов
friend vector operator%(vector a, vector b); //векторное произведение векторов
friend double abs(vector a); //модуль вектора
};
vector operator+(vector a, vector b)
{
vector temp;
temp.x = a.x + b.x;
temp.y = a.y + b.y;
temp.z = a.z + b.z;
return temp;
}
vector operator-(vector a, vector b)
{
vector temp;
temp.x = a.x - b.x;
temp.y = a.y - b.y;
temp.z = a.z - b.z;
return temp;
}
vector operator*(vector a, double scalar)
{
vector temp;
temp.x = a.x * scalar;
temp.y = a.y * scalar;
temp.z = a.z * scalar;
return temp;
}
double operator*(vector a, vector b)
{
return a.x*b.x + a.y*b.y + a.z*b.z;
}
vector operator%(vector a, vector b)
{
vector Ox(1,0,0), Oy(0,1,0), Oz(0,0,1);
return Ox*(a.y*b.z - a.z*b.y) + Oy*(a.z*b.x - a.x*b.z) + Oz*(a.x*b.y - a.y*b.x);
}
double abs(vector a)
{
return sqrt(a.x*a.x + a.y*a.y + a.z*a.z);
}