From a6b44883a81c2d6e82665268126f98ec1c339673 Mon Sep 17 00:00:00 2001 From: Alexander Zhirov Date: Thu, 30 Sep 2021 04:08:40 +0300 Subject: [PATCH] exercise 1,2 corrected --- lesson_3/exercise_2.cpp | 26 +++++++++++++++----------- lesson_3/exercise_2.hpp | 4 ++-- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/lesson_3/exercise_2.cpp b/lesson_3/exercise_2.cpp index ec7837e..4058438 100644 --- a/lesson_3/exercise_2.cpp +++ b/lesson_3/exercise_2.cpp @@ -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"; // манипулятор для вывода без экспоненты + } } diff --git a/lesson_3/exercise_2.hpp b/lesson_3/exercise_2.hpp index 70b4b0b..62a4cc9 100644 --- a/lesson_3/exercise_2.hpp +++ b/lesson_3/exercise_2.hpp @@ -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(); // заполнить массив случайными значениями