exercise 1,2 corrected

This commit is contained in:
Alexander Zhirov 2021-09-30 04:08:40 +03:00
parent 1bc734e220
commit a6b44883a8
2 changed files with 17 additions and 13 deletions

View File

@ -61,15 +61,15 @@ Matrix Matrix::getModifiedMatrix(Matrix &arr, const size_t item)
return newArray; return newArray;
} }
double Matrix::calculateDeterminant(Matrix &arr, const size_t size) double Matrix::calculateDeterminant(Matrix &arr)
{ {
double determinant = 0; double determinant = 0;
if (size == 1) if (arr.size() == 1)
{ {
determinant = arr[0][0]; 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]; 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; 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); Matrix newArray = getModifiedMatrix(arr, i);
determinant += sign * arr[i][0] * calculateDeterminant(newArray, size - 1); determinant += sign * arr[i][0] * calculateDeterminant(newArray);
sign = -sign; sign = -sign;
} }
} }
@ -99,7 +99,7 @@ void Matrix::fillRandom()
*(array + i) = round(urd(mersenne) * 10) / 10; *(array + i) = round(urd(mersenne) * 10) / 10;
} }
matrixDeterminant = calculateDeterminant((*this), matrixSize); matrixDeterminant = calculateDeterminant((*this));
} }
void Matrix::print() const void Matrix::print() const
@ -112,7 +112,7 @@ void Matrix::print() const
if (!(i % matrixSize)) if (!(i % matrixSize))
{ {
cout << ']' << endl; cout << " ]" << endl;
if (i < matrixCapacity) if (i < matrixCapacity)
{ {
@ -143,9 +143,13 @@ Matrix::~Matrix()
void exercise_2() void exercise_2()
{ {
Matrix m(7); for (size_t i = 1; i < 8; ++i)
m.fillRandom(); {
m.print(); cout << "Матрица " << i << 'x' << i << ':' << endl;
cout << "Определитель матрицы: " << setprecision(10) << m.determinant() << endl; // манипулятор для вывода без экспоненты Matrix m(i);
m.fillRandom();
m.print();
cout << "Определитель матрицы: " << setprecision(10) << m.determinant() << "\n\n"; // манипулятор для вывода без экспоненты
}
} }

View File

@ -11,7 +11,7 @@
/* /*
* Т.к. определитель (детрминант) вычисляется только для квадратной матрицы, * Т.к. определитель (детрминант) вычисляется только для квадратной матрицы,
* то класс инициализируется одним положительным целочисленным значением. * то объект класса инициализируется одним положительным целочисленным значением.
*/ */
class Matrix class Matrix
{ {
@ -22,7 +22,7 @@ private:
double matrixDeterminant { 0.0 }; double matrixDeterminant { 0.0 };
Matrix getModifiedMatrix(Matrix &arr, const size_t item); Matrix getModifiedMatrix(Matrix &arr, const size_t item);
double calculateDeterminant(Matrix &arr, const size_t size); double calculateDeterminant(Matrix &arr);
public: public:
Matrix(const int size); Matrix(const int size);
void fillRandom(); // заполнить массив случайными значениями void fillRandom(); // заполнить массив случайными значениями