#include <iostream>
using namespace std;
void rec(double **A, double **p, int i, int j, int m) {
int ki, kj, di, dj;
di = 0;
for (ki = 0; ki<m - 1; ki++)
{
if (ki == i)
di = 1;
dj = 0;
for (kj = 0; kj<m - 1; kj++)
{
if (kj == j)
dj = 1;
p[ki][kj] = A[ki + di][kj + dj];
}
}
for (ki = 0; ki < m - 1; ki++)
{
for (kj = 0; kj < m - 1; kj++)
cout << p[ki][kj] << " ";
cout << endl;
}
}
int det(double **A, int m) {
int i, j, d, k, n;
double **p = new double*[m];
for (i = 0; i<m; i++)
p[i] = new double[m];
j = 0; d = 0;
k = 1;
n = m - 1;
if (m<1) cout << "Определитель вычислить невозможно!";
if (m == 1)
{
d = A[0][0];
return(d);
}
if (m == 2)
{
d = A[0][0] * A[1][1] - (A[1][0] * A[0][1]);
return(d);
}
if (m>2)
{
for (i = 0; i<m; i++)
{
rec(A, p, i, 0, m);
d += k * A[i][0] * det(p, n);
k = -k;
}
}
return(d);
}
int main()
{
setlocale(LC_ALL, "Russian");
int m, i, j, d;
cout << "Введите размерность квадратной матрицы: ";
cin >> m;
cout << "Введите матрицу размерностью " << m << "x" << m << endl;
double **A = new double*[m];
for (i = 0; i<m; i++)
{
A[i] = new double[m];
for (j = 0; j<m; j++)
cin >> A[i][j];
}
d = det(A, m);
cout << "Определитель матрицы равен: " << d << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCByZWMoZG91YmxlICoqQSwgZG91YmxlICoqcCwgaW50IGksIGludCBqLCBpbnQgbSkgewoJaW50IGtpLCBraiwgZGksIGRqOwoJZGkgPSAwOwoJZm9yIChraSA9IDA7IGtpPG0gLSAxOyBraSsrKQoJewoJCWlmIChraSA9PSBpKQoJCQlkaSA9IDE7CgkJZGogPSAwOwoJCWZvciAoa2ogPSAwOyBrajxtIC0gMTsga2orKykKCQl7CgkJCWlmIChraiA9PSBqKQoJCQkJZGogPSAxOwoJCQlwW2tpXVtral0gPSBBW2tpICsgZGldW2tqICsgZGpdOwoJCX0KCX0KCWZvciAoa2kgPSAwOyBraSA8IG0gLSAxOyBraSsrKQoJewoJCWZvciAoa2ogPSAwOyBraiA8IG0gLSAxOyBraisrKQoJCQljb3V0IDw8IHBba2ldW2tqXSA8PCAiICI7CgkJY291dCA8PCBlbmRsOwoJfQp9CgppbnQgZGV0KGRvdWJsZSAqKkEsIGludCBtKSB7CglpbnQgaSwgaiwgZCwgaywgbjsKCWRvdWJsZSAqKnAgPSBuZXcgZG91YmxlKlttXTsKCWZvciAoaSA9IDA7IGk8bTsgaSsrKQoJCXBbaV0gPSBuZXcgZG91YmxlW21dOwoJaiA9IDA7IGQgPSAwOwoJayA9IDE7CgluID0gbSAtIDE7CglpZiAobTwxKSAgY291dCA8PCAi0J7Qv9GA0LXQtNC10LvQuNGC0LXQu9GMINCy0YvRh9C40YHQu9C40YLRjCDQvdC10LLQvtC30LzQvtC20L3QviEiOwoJaWYgKG0gPT0gMSkKCXsKCQlkID0gQVswXVswXTsKCQlyZXR1cm4oZCk7Cgl9CglpZiAobSA9PSAyKQoJewoJCWQgPSBBWzBdWzBdICogQVsxXVsxXSAtIChBWzFdWzBdICogQVswXVsxXSk7CgkJcmV0dXJuKGQpOwoJfQoJaWYgKG0+MikKCXsKCQlmb3IgKGkgPSAwOyBpPG07IGkrKykKCQl7CgkJCXJlYyhBLCBwLCBpLCAwLCBtKTsKCQkJZCArPSBrICogQVtpXVswXSAqIGRldChwLCBuKTsKCQkJayA9IC1rOwoJCX0KCX0KCXJldHVybihkKTsKfQoKCgppbnQgbWFpbigpCnsKCXNldGxvY2FsZShMQ19BTEwsICJSdXNzaWFuIik7CglpbnQgbSwgaSwgaiwgZDsKCWNvdXQgPDwgItCS0LLQtdC00LjRgtC1INGA0LDQt9C80LXRgNC90L7RgdGC0Ywg0LrQstCw0LTRgNCw0YLQvdC+0Lkg0LzQsNGC0YDQuNGG0Ys6ICI7CgljaW4gPj4gbTsKCWNvdXQgPDwgItCS0LLQtdC00LjRgtC1INC80LDRgtGA0LjRhtGDINGA0LDQt9C80LXRgNC90L7RgdGC0YzRjiAiIDw8IG0gPDwgIngiIDw8IG0gPDwgZW5kbDsKCWRvdWJsZSAqKkEgPSBuZXcgZG91YmxlKlttXTsKCWZvciAoaSA9IDA7IGk8bTsgaSsrKQoJewoJCUFbaV0gPSBuZXcgZG91YmxlW21dOwoJCWZvciAoaiA9IDA7IGo8bTsgaisrKQoJCQljaW4gPj4gQVtpXVtqXTsKCX0KCWQgPSBkZXQoQSwgbSk7Cgljb3V0IDw8ICLQntC/0YDQtdC00LXQu9C40YLQtdC70Ywg0LzQsNGC0YDQuNGG0Ysg0YDQsNCy0LXQvTogIiA8PCBkIDw8IGVuZGw7CglyZXR1cm4gMDsKfQ==