Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Внимание! Есть замечания модератора по теме: Название темы должно адекватно отражать суть решаемой задачи/проблемы.
Старый 25.09.2012, 00:53   #1
blacknik
Новичок
Джуниор
 
Регистрация: 25.09.2012
Сообщений: 1
Сообщение написать программу с обобщенным классом у которого есть поле - двумерный массив (C++)

Надо написать программу с обобщенным классом у которого есть поле - двумерный массив
реализовать конструкторы, деструктор и оператор присваивания.
перезагрузить оператор инкремента так, чтобы все строки циклически смещались на одну позицию
двумерный массив представляется в виде двойного указателя....

Код:
# include "header.h"

template<typename T, int n, int m> int Matrix<T,n,m>::counter=0;

template<typename T, int n, int m> Matrix<T,n,m>::Matrix()
:massive(0)
{
	this->massive=new T*[n];
	for(int i=0;i<n;i++)
	{
		*(massive+i)=new T[m];
	}
	Matrix<T,n,m>::counter++;
	std::cout << "the number of matrices is: " << Matrix<T,n,m>::getcounter() << std::endl;
}

template<typename T, int n, int m> Matrix<T,n,m>::Matrix(const Matrix<T,n,m> & src)
:massive(0)
{
	this->massive=new T*[n];
	for(int i=0;i<n;i++)
	{
		*(this->massive+i)=new T[m];
		for(int j=0;j<m;j++)
		{
			*(*(this->massive+i)+j)=*(*(src.massive+i)+j);
		}
	}
	Matrix<T,n,m>::counter++;
	std::cout << "the number of matrices is: " << Matrix<T,n,m>::getcounter() << std::endl;
}

template<typename T, int n, int m> Matrix<T,n,m>::~Matrix()
{
	for(int i=0; i<n; i++)
	{
		delete [] *(this->massive+i);
	}
	delete this->massive;
	Matrix<T,n,m>::counter--;
	std::cout << "the number of matrices is: " << Matrix<T,n,m>::getcounter() << std::endl;
}

template<typename T, int n, int m> Matrix<T,n,m> & Matrix<T,n,m>::operator=(const Matrix<T,n,m> & rhs)
{
	if(this==&rhs)
	{
		return *this;
	}
	else
	{
		for(int i=0;i<n;i++)
	     {
		for(int j=0;j<m;j++)
		     {
			   *(*(this->massive+i)+j)=*(*(rhs.massive+i)+j);
		     }
	     }
		return *this;
	}
}

template<typename T, int n, int m> int Matrix<T,n,m>::getcounter()
{
	return Matrix<T,n,m>::counter;
}

template<typename R, int k, int l> Matrix<R,k,l> operator++(Matrix<R,k,l> &a1)
{
        for(int i = 0; i < k; i++)
        {
		rotate(massiv[i], massiv[i] + i, massiv[i] + k);
        }
        return *this;
        
}

template<typename R, int m, int n>std::istream & operator >> (std::istream &stream, Matrix<R,m,n> &M)
{
	for(int i=0; i<m; i++)
	{
		for(int j=0; j<n; j++)
		{
			stream >> *(*(M.massive+i)+j);
		}
	}
	return stream;
}

template<typename R, int m, int n>std::ostream & operator << (std::ostream &stream, Matrix<R,m,n> &M)
{
	for(int i=0; i<m; i++)
	{
		for(int j=0; j<n; j++)
		{
			stream << *(*(M.massive+i)+j);
		}
	}
	return stream;
}
blacknik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу написать программу Двумерный массив Sing Паскаль, Turbo Pascal, PascalABC.NET 4 21.03.2012 16:44
Надо написать программу(или доработать то что есть) sssr1 Фриланс 2 20.01.2012 17:29
Написать программу в Delphi.Двумерный массив. Rinka1 Помощь студентам 1 14.12.2011 22:39
нужно доделать программу на паскале(двумерный массив) Venesia Помощь студентам 12 06.12.2010 19:28
Двумерный массив.Поиск столбца сумма,которого равна 0 Almost456 Паскаль, Turbo Pascal, PascalABC.NET 5 30.11.2008 23:43