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) |
Индексация по элементам матрицы (строка, колонка) | индекс за пределами матрицы |