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