Open alexey-malov opened 5 years ago
Оригинал:
1 0 -2
0 1 3
0 0 1
Вывод программы
1.000 0.000 0.000
-0.000 1.000 0.000
2.000 -3.000 1.000
Если их перемножить, не получится единичная матрица
void readMatrix(string fileName, Matrix& matrix, Status& status)
[x] Имя следует принимать по константной ссылке
[x] Зачем 2 out-параметра при отсутствии возвращаемого значения?
[x] Status содержит значения, которые функция readMatrix не может вернуть. Возможно, будет достаточно bool
void readMatrix(string fileName, Matrix& matrix, Status& status)
{
ifstream inputFile(fileName);
string line;
int row = 0;
int col;
if (!inputFile.is_open())
{
status = Status::InvalidInputFile;
}
else
{
while (getline(inputFile, line) && status == Status::Ok)
void invertMatrix(Matrix& inputMatrix, Matrix& resultMatrix, Status& status)
{
double determinant = 0;
if (isDeterminantNotNull(inputMatrix, determinant))
for (int row = 0; row < MATRIX_SIZE; row++)
{
resultMatrix[row][col] = ((inputMatrix[(row + 1) % MATRIX_SIZE][(col + 1) % MATRIX_SIZE] * inputMatrix[(row + 2) % MATRIX_SIZE][(col + 2) % MATRIX_SIZE]) - (inputMatrix[(row + 1) % MATRIX_SIZE][(col + 2) % MATRIX_SIZE] * inputMatrix[(row + 2) % MATRIX_SIZE][(col + 1) % MATRIX_SIZE])) / determinant;
}
void invertMatrix(Matrix& inputMatrix, Matrix& resultMatrix, Status& status)
{
double determinant = 0;
if (isDeterminantNotNull(inputMatrix, determinant))
{
...
}
else
{
status = Status::CanNotInvertMatrix;
}
}
isDeterminantNotEqualeNull
- переменная не нужна. Если можно использовать положительную формулировку, лучше использовать её