2021-09-30 00:46:47 +00:00
|
|
|
|
/*
|
|
|
|
|
* exercise_2.hpp
|
|
|
|
|
*
|
|
|
|
|
* Created on: 29 сент. 2021 г.
|
|
|
|
|
* Author: alexander
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <cstddef>
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Т.к. определитель (детрминант) вычисляется только для квадратной матрицы,
|
2021-09-30 01:08:40 +00:00
|
|
|
|
* то объект класса инициализируется одним положительным целочисленным значением.
|
2021-09-30 00:46:47 +00:00
|
|
|
|
*/
|
|
|
|
|
class Matrix
|
|
|
|
|
{
|
|
|
|
|
private:
|
|
|
|
|
const size_t matrixSize;
|
|
|
|
|
const size_t matrixCapacity;
|
|
|
|
|
double *array;
|
|
|
|
|
double matrixDeterminant { 0.0 };
|
|
|
|
|
|
|
|
|
|
Matrix getModifiedMatrix(Matrix &arr, const size_t item);
|
2021-09-30 01:08:40 +00:00
|
|
|
|
double calculateDeterminant(Matrix &arr);
|
2021-09-30 00:46:47 +00:00
|
|
|
|
public:
|
|
|
|
|
Matrix(const int size);
|
|
|
|
|
void fillRandom(); // заполнить массив случайными значениями
|
|
|
|
|
void print() const; // распечатать массив
|
|
|
|
|
size_t size() const; // получить размер массива
|
|
|
|
|
double determinant() const; // получить определитель матрицы
|
|
|
|
|
|
|
|
|
|
class Iterator
|
|
|
|
|
{
|
|
|
|
|
private:
|
|
|
|
|
double *currentRow;
|
|
|
|
|
public:
|
|
|
|
|
Iterator(double *row);
|
|
|
|
|
double& operator[](size_t i);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Iterator operator[](size_t i);
|
|
|
|
|
|
|
|
|
|
~Matrix();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
void exercise_2();
|