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

Лабы / var09 my / 03nm

.cpp
Скачиваний:
24
Добавлен:
30.04.2013
Размер:
1.9 Кб
Скачать
#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();
}
Соседние файлы в папке var09 my