26
Дек
2016

Вычисление определителя при помощи правила Саррюса

Ув. пользователи, помогите пожалуйста разобраться в вычислении определителя матрицы методом Саррюса, а точнее подкорректировать алгоритм, во втором цикле

#include <iostream>
#include <ctime>

using std::cout;
using std::cin;
using std::endl;

void main()
{
setlocale(LC_ALL, "Russian");
srand(time(NULL));

const int col = 5, row = 3;

int matrix[col][row] = {};
int det = 0;

for (int i = 0; i < row; cout << endl, i++)  // инициализация матрицы случайными значениями
    for (int j = 0; j < col; j++)
    {
        if (j < 3) cout << (matrix[i][j] = rand() % 5 + 1) << " ";
        else matrix[i][j] = matrix[i][j - 3];
    }

for (int i = 0; i == 0 && i < row; cout << endl, i++) // вычисление определителя
    for (int j = 0; j < col + 1; j++)
        (j < 3) ? det += (matrix[i][j] * matrix[i + 1][j + 1] * matrix[i + 2][j + 2]) : det -= (matrix[i][j - 1] * matrix[i + 1][j - 2] * matrix[i + 2][j - 3]);

cout << "det = " << det << endl;
}

Собственно, выражение det -= (matrix[i][j - 1] * matrix[i + 1][j - 2] * matrix[i + 2][j - 3]) работает неправильно в последних двух итерациях. Почему? Как исправить?

Источник: https://ru.stackoverflow.com/questions/607835/%D0%92%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D1%8F-%D0%BF%D1%80%D0%B8-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D0%B8-%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0-%D0%A1%D0%B0%D1%80%D1%80%D1%8E%D1%81%D0%B0

Share

Тебе может это понравится...