Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   класс вектор (http://forum.oszone.net/showthread.php?t=95792)

root_777 10-12-2007 00:31 694061

класс вектор
 
помогите плиз:

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

root_777 10-12-2007 17:12 694492

кто может, помогите пожалуйста, курсак горит!!!

root_777 10-12-2007 19:32 694611

class vector
{
int size; //размер массива
int * v; //
public:
vector(int sz);//конструктор
~vector(); //деструктор
friend vector operator+(vector v1,vector v2) // перегруженный бинарный оператор +
{
// здесь надо сложить два вектора...
};
};


может кто-нить знает как...

ivank 11-12-2007 00:32 694758

root_777, может надо было на лекции ходить? Говорят, помогает. Ну или там, у девочек-отличниц поспрашивать, за мороженное. На крайний случай можно спросить у гугла или яндекса, они много знают.

Diseased Head 11-12-2007 00:53 694771

root_777, курсак у него горит. Нафига ты тогда учишся? Здесь же всё просто.

Для начала поясни. Имеются ввиду вектора на плоскости, в пространстве или в N-мерном пространстве?

И откуда этот код? Меня смущает конструктор.

root_777 11-12-2007 01:33 694785

Цитата:

Цитата ivank
root_777, может надо было на лекции ходить? Говорят, помогает. Ну или там, у девочек-отличниц поспрашивать, за мороженное. На крайний случай можно спросить у гугла или яндекса, они много знают. »

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

Цитата:

Цитата Diseased Head
root_777, курсак у него горит. Нафига ты тогда учишся? Здесь же всё просто.
Для начала поясни. Имеются ввиду вектора на плоскости, в пространстве или в N-мерном пространстве?
И откуда этот код? Меня смущает конструктор. »

Не моя специальность программы на СИшке писать - немного другой профиль. А код этот мне на другом форуме подсунули...

Ежели кто в силах помочь - мой АйСиКъйю: 215968771
буду благодарен по гроб жизни своих прапраправнуков

root_777 11-12-2007 02:05 694792

пришел только к такому:

#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

но не знаю, правильно ли...

Drongo 11-12-2007 21:31 695409

root_777,
Вот ссылка ( Описание классов Матрица и Вектор (Линейная алгебра) ), там тебе будет полный "Фарш" по классу Вектор, какой нужен конструктор...
Вот ещё ссылка на топик на форуме, девушка задавала задачку аналогичную, мож там чего найдёшь...
Такой Вариант, ну и на всякий случай вложу файл... Мож пригодится?!
Правда, Твоя реализация класса Вектор очень смущает, если нужно так много операций... Факт!

Diseased Head 12-12-2007 00:40 695496

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);
}



Время: 14:38.

Время: 14:38.
© OSzone.net 2001-