Требуется реализовать класс матриц над вещественными числами двойной точности.
- Конструктор по-умолчанию, создающий единичную матрицу размера
1 x 1
- Конструктор единичной матрицы заданного размера
- Неквадратную матрицу инициализировать единицами на главной диагонали, нулями иначе
- Конструктор копирования
- Оператор присваивания
- Методы
get
иset
- В случае обращения за границы матрицы необходимо бросать
OutOfBoundsException
- В случае обращения за границы матрицы необходимо бросать
- Метод
resize
, изменяющий размер матрицы- В случае добавления новых значений, они должны инициализироваться нулями
- Оператор
[]
, который должно быть можно применить дважды, в том числе и для константных матриц - Операторы сложения, вычитания, умножения на скаляр и матрицу, составного присваивания; унарный плюс и минус
- Операторы сравнения матриц на равенство
- Методы
det
,transpose
иtransposed
,trace
, выполняющие соответствуюищие математические операции над матрицей - Методы
getRow
иgetColumn
, возвращающие заданную строчку или столбец матрицы в видеstd::vector
- Операторы потокового ввода и вывода
- На ввод сначала подается размер матрицы, потом значения
В арифметических операциях, а также det
и trace
, при невозможности выполнить
операцию из-за несовпадения размеров матриц, требуется бросать SizeMismatchException
Шаблон решения со всеми требуемыми определениями уже написан.
Для внутреннего хранения матрицы запрещается использовать стандартные контейнеры.
При сравнении вещественных чисел используйте предоставленную константу EPS
.
Задача стоит 6 баллов.
Решения сданные позже 23:59:59 13 Октября 2020 года не принимаются.