#include <iostream>
#include <windows.h>
using namespace std;
void print_array_using_pointers(int r, int c, int* ptr)
{
int i, j;
for (i = 0; i < r; i++)
{
cout << "[";
for (j = 0; j < c; j++)
{
cout << " " << *ptr;
ptr = ptr + 1;
}
cout << " ]" << endl;
}
return;
}
double determinant(int m, int* p)
{
double ans = 0, inner_sol, inner_determinant;
int a, b, c, d;
if ((m == 1) || (m == 2))
{
if (m == 1)
ans = *p;
else
{
a = *p;
b = *(p + 1);
c = *(p + 2);
d = *(p + 3);
ans = (a * d) - (b * c);
}
}
else
{
int i, j, k, l, n, sign, basic, element;
n = 0;
sign = +1;
int* q;
q = new int[(m - 1) * (m - 1)];
for (i = 0; i < m; i++)
{
l = 0;
n = 0;
basic = *(p + i);
for (j = 0; j < m; j++)
{
for (k = 0; k < m; k++)
{
element = *(p + l);
cout << element << " ";
if ((j == 0) || (i == k));
else
{
*(q + n) = element;
n = n + 1;
}
l = l + 1;
}
}
cout << endl << basic << " x " << endl;
print_array_using_pointers((m - 1), (m - 1), q);
inner_determinant = determinant(m - 1, q);
inner_sol = sign * basic * inner_determinant;
cout << "Знак:" << sign << "x Базис: " << basic << "x Определитель" << inner_determinant << " = " << inner_sol << endl;
ans = ans + inner_sol;
sign = sign * -1;
}
delete[] q;
}
return ans;
}
void initialize_array(int r, int c, int* ptr)
{
int i, j, k;
cout << "Вводите числа в матрицу" << endl;
cout << "После каждого числа нажимайте Enter" << endl;
for (i = 0; i < r; i++)
{
for (j = 0; j < c; j++)
{
cin >> k;
*(ptr + i * c + j) = k;
}
}
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int r, * p;
cout << "Количество рядов: ";
cin >> r;
p = new int[r * r];
initialize_array(r, r, p);
print_array_using_pointers(r, r, p);
double ans = determinant(r, p);
cout << "Определитель: " << ans << endl;
delete[] p;
return 0;
}
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter