Суммирование матриц (6)
Суммирование матриц
Условие
В этой задаче вам необходимо разработать класс 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