lesson_3 #3
|
@ -61,15 +61,15 @@ Matrix Matrix::getModifiedMatrix(Matrix &arr, const size_t item)
|
|||
return newArray;
|
||||
}
|
||||
|
||||
double Matrix::calculateDeterminant(Matrix &arr, const size_t size)
|
||||
double Matrix::calculateDeterminant(Matrix &arr)
|
||||
{
|
||||
double determinant = 0;
|
||||
|
||||
if (size == 1)
|
||||
if (arr.size() == 1)
|
||||
{
|
||||
determinant = arr[0][0];
|
||||
}
|
||||
else if (size == 2)
|
||||
else if (arr.size() == 2)
|
||||
{
|
||||
determinant = arr[0][0] * arr[1][1] + arr[1][0] * arr[0][1];
|
||||
}
|
||||
|
@ -77,10 +77,10 @@ double Matrix::calculateDeterminant(Matrix &arr, const size_t size)
|
|||
{
|
||||
int sign = 1;
|
||||
|
||||
for (size_t i = 0; i < size; ++i)
|
||||
for (size_t i = 0; i < arr.size(); ++i)
|
||||
{
|
||||
Matrix newArray = getModifiedMatrix(arr, i);
|
||||
determinant += sign * arr[i][0] * calculateDeterminant(newArray, size - 1);
|
||||
determinant += sign * arr[i][0] * calculateDeterminant(newArray);
|
||||
sign = -sign;
|
||||
}
|
||||
}
|
||||
|
@ -99,7 +99,7 @@ void Matrix::fillRandom()
|
|||
*(array + i) = round(urd(mersenne) * 10) / 10;
|
||||
}
|
||||
|
||||
matrixDeterminant = calculateDeterminant((*this), matrixSize);
|
||||
matrixDeterminant = calculateDeterminant((*this));
|
||||
}
|
||||
|
||||
void Matrix::print() const
|
||||
|
@ -112,7 +112,7 @@ void Matrix::print() const
|
|||
|
||||
if (!(i % matrixSize))
|
||||
{
|
||||
cout << ']' << endl;
|
||||
cout << " ]" << endl;
|
||||
|
||||
if (i < matrixCapacity)
|
||||
{
|
||||
|
@ -143,9 +143,13 @@ Matrix::~Matrix()
|
|||
|
||||
void exercise_2()
|
||||
{
|
||||
Matrix m(7);
|
||||
m.fillRandom();
|
||||
m.print();
|
||||
cout << "Определитель матрицы: " << setprecision(10) << m.determinant() << endl; // манипулятор для вывода без экспоненты
|
||||
for (size_t i = 1; i < 8; ++i)
|
||||
{
|
||||
cout << "Матрица " << i << 'x' << i << ':' << endl;
|
||||
Matrix m(i);
|
||||
m.fillRandom();
|
||||
m.print();
|
||||
cout << "Определитель матрицы: " << setprecision(10) << m.determinant() << "\n\n"; // манипулятор для вывода без экспоненты
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
/*
|
||||
* Т.к. определитель (детрминант) вычисляется только для квадратной матрицы,
|
||||
* то класс инициализируется одним положительным целочисленным значением.
|
||||
* то объект класса инициализируется одним положительным целочисленным значением.
|
||||
*/
|
||||
class Matrix
|
||||
{
|
||||
|
@ -22,7 +22,7 @@ private:
|
|||
double matrixDeterminant { 0.0 };
|
||||
|
||||
Matrix getModifiedMatrix(Matrix &arr, const size_t item);
|
||||
double calculateDeterminant(Matrix &arr, const size_t size);
|
||||
double calculateDeterminant(Matrix &arr);
|
||||
public:
|
||||
Matrix(const int size);
|
||||
void fillRandom(); // заполнить массив случайными значениями
|
||||
|
|
Loading…
Reference in New Issue