Спроектировать и реализовать класс 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; }