//
//#include <iostream>
//using namespace std;
//
//int main() {
// int n;
// setlocale(LC_ALL, "");
// cout << "Введите количество чисел: ";
// cin >> n;
// int* arr = new int[n];
//
// // Ввод чисел в массив
// cout << "Введите " << n << " чисел:" << endl;
// for (int i = 0; i < n; ++i) {
// cin >> *(arr+i);
// }
//
// // Поиск наибольшего числа
// int max_value = *(arr);
//
// for (int i = 1; i < n; ++i) {
// if (arr[i] > max_value) {
// max_value = *(arr+i);
// }
// }
//
// // Вывод результата
// cout << "Наибольшее число: " << max_value << endl;
// delete[] arr;
// return 0;
//
//}
//#include<iostream>
//#include<vector>
//#include<windows.h>
//using namespace std;
//
//int main()
//{
// SetConsoleCP(1251);
// SetConsoleOutputCP(1251);
// int n; // Количествострок
// cout << "Введите количество строк: ";
// cin >> n;
//
// vector<string>lines; // Вектор для хранения строк
//
// // Ввод строк
// cout << "Введите " << n << " строк:" << endl;
// for (int i = 0; i < n; ++i)
// {
// string line;
// cin >> line; // Считываем строку без пробелов
//
// // Вставляем строку в отсортированное место
// vector<string>::iterator it = lines.begin();
// while (it != lines.end() && *it < line)
// {
// ++it; // Находим место для вставки
// }
// lines.insert(it, line); // Вставляемстроку
// }
//
// // Вывод результата
// cout << "Строки в алфавитном порядке:" << endl;
// for (vector<string>::size_type i = 0; i < lines.size(); ++i)
// {
// cout << lines[i] << endl;
// }
//
// return 0;
//}
//
#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;
}