![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
#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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!