Показать полную графическую версию : класс вектор
root_777
10-12-2007, 00:31
помогите плиз:
сформировать класс вектор реализующий все математические операции с векторами (сложение, вычитание, умножение и получение модуля)
root_777
10-12-2007, 17:12
кто может, помогите пожалуйста, курсак горит!!!
root_777
10-12-2007, 19:32
class vector
{
int size; //размер массива
int * v; //
public:
vector(int sz);//конструктор
~vector(); //деструктор
friend vector operator+(vector v1,vector v2) // перегруженный бинарный оператор +
{
// здесь надо сложить два вектора...
};
};
может кто-нить знает как...
root_777, может надо было на лекции ходить? Говорят, помогает. Ну или там, у девочек-отличниц поспрашивать, за мороженное. На крайний случай можно спросить у гугла или яндекса, они много знают.
Diseased Head
11-12-2007, 00:53
root_777, курсак у него горит. Нафига ты тогда учишся? Здесь же всё просто.
Для начала поясни. Имеются ввиду вектора на плоскости, в пространстве или в N-мерном пространстве?
И откуда этот код? Меня смущает конструктор.
root_777
11-12-2007, 01:33
root_777, может надо было на лекции ходить? Говорят, помогает. Ну или там, у девочек-отличниц поспрашивать, за мороженное. На крайний случай можно спросить у гугла или яндекса, они много знают. »
иногда на заочке много не объясняют, а иногда вообще ничего не объясняют
а гугл и яндекс говорят что такое есть, но ни одного примера нет, а перечитывать сотни страниц нет времени. вот и пыхтю...
root_777, курсак у него горит. Нафига ты тогда учишся? Здесь же всё просто.
Для начала поясни. Имеются ввиду вектора на плоскости, в пространстве или в N-мерном пространстве?
И откуда этот код? Меня смущает конструктор. »
Не моя специальность программы на СИшке писать - немного другой профиль. А код этот мне на другом форуме подсунули...
Ежели кто в силах помочь - мой АйСиКъйю: 215968771
буду благодарен по гроб жизни своих прапраправнуков
root_777
11-12-2007, 02:05
пришел только к такому:
#ifndef _vector_
#define _vector_
#include <iostream>
using namespace std;
class vector
{
int size;
int * v;
public:
vector(int size);
~vector ();
friend vector operator+(vector v1, vector v2)
{
return v1+v2;
};
friend vector operator*(vector v1, vector v2)
{
return v1*v2;
};
friend vector operator-(vector v1, vector v2)
{
return v1-v2;
};
friend vector operator%(vector v1, vector v2)
{
return v1%v2;
};
};
#endif
но не знаю, правильно ли...
root_777,
Вот ссылка ( Описание классов Матрица и Вектор (Линейная алгебра) (http://detc.usu.ru/assets/amath0011/mp33.htm) ), там тебе будет полный "Фарш" по классу Вектор, какой нужен конструктор...
Вот ещё ссылка на топик на форуме, девушка задавала задачку аналогичную, мож там чего найдёшь...
Такой Вариант (http://forum.oszone.net/showthread.php?t=93303&page=all), ну и на всякий случай вложу файл... Мож пригодится?!
Правда, Твоя реализация класса Вектор очень смущает, если нужно так много операций... Факт!
Diseased Head
12-12-2007, 00:40
root_777
Не моя специальность программы на СИшке писать - немного другой профиль. »Хыы... Странно чёж за профессия у тебя, что такие задания дают? Где учишся кстати?
Ну вот мой вариант, может и слишком просто. Только для вектора в трёхмерном пространстве. Но как уж смог. :rolleyes:
#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);
}
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.