Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: класс вектор
Показать сообщение отдельно

Аватара для Diseased Head

Ветеран


Сообщения: 881
Благодарности: 55

Профиль | Отправить PM | Цитировать


root_777
Цитата:
Не моя специальность программы на СИшке писать - немного другой профиль. »
Хыы... Странно чёж за профессия у тебя, что такие задания дают? Где учишся кстати?

Ну вот мой вариант, может и слишком просто. Только для вектора в трёхмерном пространстве. Но как уж смог.

Код: Выделить весь код
#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);
}

-------
Знаю точно, что я есть. Остальное, всё, не точно.
Возможное - невозможно! Но невозможное - возможно, но нужна жертва соразмерная.


Последний раз редактировалось Diseased Head, 12-12-2007 в 14:29. Причина: friend перед описанием функций убрал...


Отправлено: 00:40, 12-12-2007 | #9

Название темы: класс вектор