Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Класс Вектор



#include <iostream.h>

class vector{

int n; // Размерность пространства

int* mas; // координаты вектора

static int count;

public:

static void inc_count(){ count++; }

static void dec_count(){ count--; }

vector(int razm){

n=razm;

mas=new int[n];

for (int i=0;i<n;i++)

mas[i]=0;

inc_count();

};

~vector(){dec_count();} // деконструктор

inline int size(){return n;};

friend ostream& operator<< (ostream& os, vector const v);

int operator [] (int index){return mas[index];};

vector* prisv(int index, int znach){mas[index]=znach; return this;};

vector* add(vector* a, vector* b);

vector* sub(vector* a, vector* b);

int dotprod(vector* a, vector* b);

friend vector& operator ++(vector& v);

vector operator ++(int){vector v(n);for (int i=0;i<n;i++) mas[i]++;return v;};

bool operator >(const vector &v){

int dl=0,dl2=0;

for (int i=0;i<n;i++)dl+=mas[i]*mas[i];

for (int i=0;i<v.n;i++)dl2+=v.mas[i]*v.mas[i];

if (dl>dl2) return true;

return false;

};

const vector& operator = (const vector &v){

// проверка на самоприсваивание

if (&v==this)return *this;

n=v.n;

for (int i=0;i<n;i++) mas[i]=v.mas[i];

return *this;

};

};

int vector::count=0;

vector& operator ++(vector& v){for (int i=0;i<v.n;i++) ++v.mas[i];return v;};

ostream& operator<< (ostream& os, vector const v){

cout<<endl<<"vector: ";

for (int i=0;i<v.n;i++)

cout<<v.mas[i]<<' ';

cout<<endl;

return os;

};

vector* vector::add(vector* a, vector* b){

if (a->n==b->n)

for (int i=0;i<a->n;i++)

mas[i]=a->mas[i]+b->mas[i];

return this;

};

vector* vector::sub(vector* a, vector* b){

if (a->n==b->n)

for (int i=0;i<a->n;i++)

mas[i]=a->mas[i]-b->mas[i];

return this;

};

int vector::dotprod(vector* a, vector* b){

int pr=0;

if (a->n==b->n)

for (int i=0;i<a->n;i++)

pr=pr+a->mas[i]*b->mas[i];

return pr;

};

int main(int argc, char* argv[])

{

int n=3;

vector a(n),b(n);

a.prisv(0,1); a.prisv(1,2);a.prisv(2,3);

cout<<a;

b.prisv(0,4); b.prisv(1,5);b.prisv(2,6);

cout<<b;

a.add(&a,&b); cout<<a;

a.sub(&a,&b); cout<<a;

int d=a.dotprod(&a,&b); cout<<"pr="<<d<<" ";

int c;

cout<<a.size();

cout<<a[2];

cout<<endl<<a++;

if (a>b) cout<<"true"; else cout<<"false";

vector vv(n);

vv=a;

cout<<vv;

cin>>c;

return 0;

}






Дата публикования: 2014-11-28; Прочитано: 292 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...