
Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы №4 и №5 / gera / vector
.hclass TVector
{
// public:
private:
int N;
public:
double *coords; //need for grad
//getting coord
double *Value(void)
{
return coords;
};
//dimensions
int Dimensions(void)
{
return N;
};
//constructor
TVector(double *Init,int iN)
{
N=iN;
coords=new double[N];
for(int i=0;i<N;i++)
{
//ShowMessage(IntToStr(i));
coords[i]=Init[i];
};
};
TVector()
{
N=0;
coords=NULL;
};
TVector(TVector &A)
{
if(N!=A.N) N=A.N;
coords=new double[N];
//ShowMessage(IntToStr(N));
for(int i=0;i<N;i++)
{
//ShowMessage(IntToStr(i));
if(i>=N) break;
coords[i]=A.coords[i];
//ShowMessage("coord="+FloatToStr(coords[i]));
}
//coords[0]=A.coords[0];
//coords[1]=A.coords[1];
};
//destructor
~TVector()
{
if(coords)
delete coords;
coords=NULL;
};
//peremnojenie vectorov
double operator *(TVector A)
{
double result=0;
for(int i=0;i<N;i++)
result+=A.coords[i]*coords[i];
return result;
};
//umnojenie na chislo
void operator *=(double scalar)
{
for(int i=0;i<N;i++)
this->coords[i]*=scalar;
};
//uvelichenie na vektor
void operator +=(TVector A)
{
if(N==A.N)
for(int i=0;i<N;i++)
this->coords[i]+=A.coords[i];
};
//prisvoenit
TVector operator =(TVector A)
{
if(N!=A.N)
{
delete coords;
N=A.N;
this->coords=new double[A.N];
};
for(int i=0;i<N;i++)
this->coords[i]=A.coords[i];
return *this;
};
//norma
double norm()
{
int k;
double sum=0;
for (k=0;k<N;k++)
{
sum+=coords[k]*coords[k];
}
return sqrt(sum);
}
};