exercise 1,2 corrected
This commit is contained in:
parent
1bc734e220
commit
a6b44883a8
|
@ -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"; // манипулятор для вывода без экспоненты
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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(); // заполнить массив случайными значениями
|
||||||
|
|
Loading…
Reference in New Issue