Скачиваний:
13
Добавлен:
01.05.2014
Размер:
3.15 Кб
Скачать
#include <math.h>

class CVector
{
public:
	CVector(int VectorSize);
	CVector( const CVector & );
	~CVector(void);
	
	int getSize() const;
	double getNorma() const;
	double & operator[](int subscript);
	const double &operator[](int subscript) const;
	
	const CVector & operator=(const CVector &right);
	bool operator==( const CVector &right) const;
	bool operator!=( const CVector &right) const;
	
	CVector operator*(const double k) const;
	double operator*(const CVector &right) const;
	CVector operator+(const double &alfaPoint) const;
	CVector operator-(const double alfaPoint) const;
	
	CVector operator+(const CVector &right) const;
	CVector operator-(const CVector &right) const;
	CVector operator-() const;
	
private:
	double vectorPointer[2];
	int size;
};


CVector::CVector(int VectorSize)
{
	size = VectorSize ;
	for( int i = 0; i < size; i++ )
		vectorPointer[i]=0;
}
CVector::CVector(const CVector &init) : size(init.size)
{
	for( int i = 0; i < size; i++ )
		vectorPointer[i]=init.vectorPointer[i];
}
CVector::~CVector(void)
{
}


int CVector::getSize() const
{
	return size;
}

double CVector::getNorma() const
{
	double result=0;
	for (int i=0; i<size; i++)
		result+=vectorPointer[i]*vectorPointer[i];
	return sqrt(result);
}

double & CVector::operator[](int subscript)
{
	return vectorPointer[subscript];
}

const double & CVector::operator[](int subscript) const
{
	return vectorPointer[subscript];
}


const CVector & CVector::operator=(const CVector &right)
{
	if(&right!=this)
	{
		if( size!= right.size)
		{
			size=right.size;
		}
		for ( int i = 0; i < size; i++)
			vectorPointer[i] = right.vectorPointer[i];
	}
	return *this;
}

bool CVector::operator==( const CVector &right) const
{
	if( size != right.size )
		return false;
	for (int i = 0; i < size; i++)
		if ( vectorPointer[i] != right.vectorPointer[i])
			return false;
	return true;
}

bool CVector::operator!=( const CVector &right) const
{
	return ! (*this == right );
}

CVector CVector::operator*(const double k) const
{
	CVector result(size);
	for (int i=0; i<size;i++)
		result[i]=k*vectorPointer[i];
	return result;
}

CVector CVector::operator+(const double &alfaPoint) const
{
	CVector result(size);
	for (int i=0; i<size;i++)
		result[i]=vectorPointer[i]+alfaPoint;
	return result;
}

CVector CVector::operator-(const double alfaPoint) const
{
	return *this+(-alfaPoint);
}

CVector CVector::operator+(const CVector &right) const
{
	CVector result(size);
	for (int i=0; i<size;i++)
		result[i]=vectorPointer[i] + right[i];
	return result;
}

double CVector::operator*(const CVector &right) const
{
	double result=0;
	for (int i=0; i<size;i++)
		result+=vectorPointer[i]*right[i];
	return result;
}

CVector CVector::operator-(const CVector &right) const
{
	CVector result(size);
	for (int i=0; i<size;i++)
		result[i]=vectorPointer[i] - right[i];
	return result;
}

CVector CVector::operator-() const
{
	CVector result(size);
	for (int i=0; i<size;i++)
		result[i]=-vectorPointer[i];
	return result;
}
Соседние файлы в папке prog