Суммирование матриц
Условие
В этой задаче вам необходимо разработать класс Matrix для представления вещественной матрицы. Класс Matrix должен иметь:
- конструктор по умолчанию, который создает матрицу с нулем строк и нулем столбцов
- конструктор от двух целочисленных параметров:
num_rowsиnum_cols, - которые задают количество строк и столбцов матрицы соответственно - метод
Reset, принимающий два целочисленных параметра, которые задают количество строк и столбцов матрицы соответственно - константный метод
At, который принимает номер строки и номер столбца (именно в этом порядке: нумерация строк и столбцов начинается с нуля) и возвращает значение в соответствующей ячейке матрицы - неконстантный метод
Atс такими же параметрами, но возвращающий ссылку на значение в соответствующей ячейке матрицы - константные методы
GetNumRowsиGetNumColumns, которые возвращают количество строк и столбцов матрицы соответственно
Метод At должен выбрасывать стандартное исключение out_of_range со следующим текстом: "ERROR: Out of range!", если переданные ему индексы выходят за границы матрицы.
Кроме того для класса Matrix должны быть определены следующие операторы:
- оператор ввода из потока
istream; формат ввода простой - сначала задается количество строк и столбцов (именно в этом порядке), а затем все элементы матрицы: сначала элемент первой строки и первого столбца, затем элемент первой строки и второго столбца и так далее - оператор вывода в поток
ostream; он должен выводить матрицу в том же формате, в какой ее читает оператор ввода, - в первой строке количество строк и столбцов, во второй - элементы первой строки, в третей - элементы второй строки и т.д. - оператор проверки на равенство (
==): он должен возвращатьtrue, если сравниваемые матрицы имеют одинаковый размер и все из соответствующие элементы равны между собой, в противном случае он должен возвращатьfalse - оператор сложения: он должен принимать две матрицы и возвращать новую матрицу, которая является их суммой; если переданные матрицы имеют разные размеры этот оператор должен выбрасывать стандартное исключение invalid_argument со следующим текстом: "ERROR: Incorrect matrix sizes!"
Как тестировать локально
Собрать программу с помощью cmake и запустить ctest:
mkdir build; cd build
cmake ..; cmake --build .
ctest -V