MatrixPlus

C++

C++ - язык программирования, разработанный на базе языка C для реализации программ с применением объектно-ориентированного подхода. Это означает, что общие правила синтаксиса языка C++ напрямую унаследованы из C, и, следовательно, большая часть кода, написанного на языке C может быть скопировано в текст программы на C++ и успешно скомпилировано. По большей части, C++ лишь добавляет новые возможности для программиста или несколько изменяет их, нежели что-то отнимает, поэтому, говоря о C++, легче говорить о различиях, чем о сходствах.

Пример класса матрицы на C++

class S21Matrix {
    private:
        // Attributes
        int rows_, cols_;         // Rows and columns
        double **matrix_;         // Pointer to the memory where the matrix is allocated

    public:
        S21Matrix();              // Default constructor
        ~S21Matrix();             // Destructor

        void SumMatrix(const S21Matrix& other); 
        // Other methods..
}

Основные положеня о матрице

Матрица - прямоугольная таблица чисел, расположенных в m строках и n столбцах

    1 2 3
A = 4 5 6
    7 8 9
     1  2  3  4
В =  5  6  7  8
     9 10 11 12

Получить нужный элемент можно при помощи индексов, так A[1,1] = 1, где первый индекс - номер строки, второй - номер столбца.

Порядок матрицы — это число ее строк или столбцов.
Главная диагональ квадратной матрицы — это диагональ, идущая из левого верхнего в правый нижний угол.
Прямоугольная матрица (В) — это матрица, у которой число строк не равно числу столбцов.
Квадратная матрица (А) — это матрица у которой число строк равно числу столбцов.

Операции над матрицами

Ниже представлено краткое описание операций над матрицами.

Операция Описание Исключительные ситуации
bool EqMatrix(const S21Matrix& other) Проверяет матрицы на равенство между собой
void SumMatrix(const S21Matrix& other) Прибавляет вторую матрицы к текущей различная размерность матриц
void SubMatrix(const S21Matrix& other) Вычитает из текущей матрицы другую различная размерность матриц
void MulNumber(const double num) Умножает текущую матрицу на число
void MulMatrix(const S21Matrix& other) Умножает текущую матрицу на вторую число столбцов первой матрицы не равно числу строк второй матрицы
S21Matrix Transpose() Создает новую транспонированную матрицу из текущей и возвращает ее
S21Matrix CalcComplements() Вычисляет матрицу алгебраических дополнений текущей матрицы и возвращает ее матрица не является квадратной
double Determinant() Вычисляет и возвращает определитель текущей матрицы матрица не является квадратной
S21Matrix InverseMatrix() Вычисляет и возвращает обратную матрицу определитель матрицы равен 0

Помимо реализации данных операций, реализованны конструкторы и деструкторы:

Метод Описание
S21Matrix() Базовый конструктор, инициализирующий матрицу некоторой заранее заданной размерностью
S21Matrix(int rows, int cols) Параметризированный конструктор с количеством строк и столбцов
S21Matrix(const S21Matrix& other) Конструктор копирования
S21Matrix(S21Matrix&& other) Конструктор переноса
~S21Matrix() Деструктор

А также перегрузка следующих операторов, частично соответствующие операциям выше:

Оператор Описание Исключительные ситуации
+ Сложение двух матриц различная размерность матриц
- Вычитание одной матрицы из другой различная размерность матриц
* Умножение матриц и умножение матрицы на число число столбцов первой матрицы не равно числу строк второй матрицы
== Проверка на равенство матриц (EqMatrix)
= Присвоение матрице значений другой матрицы
+= Присвоение сложения (SumMatrix) различная размерность матриц
-= Присвоение разности (SubMatrix) различная размерность матриц
*= Присвоение умножения (MulMatrix/MulNumber) число столбцов первой матрицы не равно числу строк второй матрицы
(int i, int j) Индексация по элементам матрицы (строка, колонка) индекс за пределами матрицы