Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / var09 my / 03

.doc
Скачиваний:
26
Добавлен:
30.04.2013
Размер:
30.72 Кб
Скачать

Лабораторная работа №3

Востропятов Н. А.

Вар №9

I. Класс "Вектор из элементов типа double" (DVector) состоит из следующих данных:

указатель на тип double; размерность вектора.

Определить операции и функции, необходимые для следующих вычислений. Прописные буквы в формулах означают векторы, строчные простые переменные, а строчные с нижним индексом - элементы вектора.

Y = x*V - U/2

Z = v2*U - 2*V.

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

class DVector

{

friend void print(DVector &a);

public:

DVector(void) { pData = 0; m_size = 0; }

DVector(int size) { pData = new double[size]; for(int i=0;i<size;i++)pData[i]=0.0; m_size = size; }

DVector(double *a, int size) { pData = a; m_size = size; }

DVector(DVector &src) { *this = src; };

~DVector(void) { printf("del %d\n", m_size); if (pData || m_size > 0) delete [] pData; }

inline DVector &operator=(DVector &src)

{

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

pData[i] = src[i];

return *this;

}

inline DVector &operator=(double a)

{

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

pData[i]=a;

}

inline DVector operator*(DVector &a)

{

if (!pData || !a.pData)

return 0;

int n = m_size<a.m_size?m_size:a.m_size;

// DVector d(n);

double *d = new double[n];

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

d[i] = pData[i]*a[i];

return DVector(d, n);

}

inline DVector operator*(double a)

{

double *d = new double[m_size];

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

d[i] = pData[i]*a;

return DVector(d, m_size);

}

inline DVector operator-(DVector &a)

{

if (!pData || !a.pData)

return 0;

int n = m_size<a.m_size?m_size:a.m_size;

double *d = new double[n];

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

d[i] = pData[i]-a[i];

return DVector(d, n);

}

double &operator[](int i) { return pData[i]; }

private:

double *pData;

int m_size;

};

void print(DVector &a)

{

for (int i=0; i<a.m_size; i++)

printf("%d - %f\n", i, a[i]);

printf("\n");

}

void main()

{

DVector U(4);

DVector V(4);

double x = 0;

printf("Enter X: ");

scanf("%f", &x);

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

{

U[i] = rand();

V[i] = rand();

}

print(U);

print(V);

DVector Y(4);

DVector Z(4);

Y = V*x - U*0.5;

Z = U*V[2] - V*2;

print(Y);

print(Z);

getch();

}

2

Соседние файлы в папке var09 my