Вариант 4. Матрицы

Сложность

15 баллов

Описание

Спроектировать и реализовать класс Matrix, предназначенный для работы с матрицами. Класс должен позволять создавать матрицы различных размеров, однако допустимо ввести ограничение сверху на размер создаваемой матрицы. То есть, позволять пользователю создать матрицу nхm, где (1 <= n,m <= MAX).

В классе должны быть определены различные конструкторы (по умолчанию, по паре целых чисел, задающих размер матрицы, конструктор копирования).

Должны быть перегружены следующие операторы: +, -, * (как для двух матриц, так и для матрицы и числа), оператор индексирования [] для доступа к элементу матрицы, +=, -=, *= (правым операндом может быть как матрица, так и число), ==, !=, << (вывод в поток типа ostream).

Защита

Для защиты лабораторной работы необходимо представить:

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

Пример

Разработанный класс Matrix должен допускать такое использование:

/*...*/

int main() {
	Matrix a;
	Matrix b(2,2);
	Matrix c(3,3);

	for (int i = 0; i < 2; i++)
		for (int j = 0; j < 2; j++) b(i,j) = i+j;

	b *= 2;
	b = a = b + b; 

	if (a != b) cout << "Something wrong\n"; else cout << "As expected\n";

	b += c;   // эта строчка работать не должна, потому что матрицы
		  // разной размерности складывать нельзя.         

	cout << a << endl
	     << c << endl
	     << b << endl;

	return 0;
}
Сайт управляется системой uCoz