copy

PHOTO EMBED

Wed Nov 06 2024 10:52:03 GMT+0000 (Coordinated Universal Time)

Saved by @Yakostoch #c++

//
//#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;

}
content_copyCOPY