Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include <iostream>
- #include <time.h>
- #include <vector>
- using namespace std;
- int main()
- {
- setlocale(LC_ALL, "Russian");
- srand(time(NULL));
- int SIZE;
- cout << "Введите размерность матрицы: "; // ввод размерности
- cin >> SIZE;
- vector <vector <double>> arr(SIZE, vector <double>(SIZE)); // создает двумерный вектор размера SIZE
- for (int i = 0; i < SIZE; i++) // присваивание значений матрице
- {
- for (int j = 0; j < SIZE; j++)
- {
- arr[i][j] = rand() % 10;
- }
- }
- for (int i = 0; i < SIZE; i++) // вывод матрицы
- {
- for (int j = 0; j < SIZE; j++)
- {
- cout << arr[i][j] << "\t";
- }
- cout << endl;
- }
- double temp = 0; // временная переменная для хранения элемента
- int temp_index = 0; // временная переменная для хранения индекса элемента
- int repit = SIZE - 1; //кол-во повторов
- double chethik = 1; // переменная для хранения накопленного произведения коэффициентов при минорах
- if (SIZE == 1)
- {
- chethik = chethik * arr[0][0];
- cout << "Определитель = " << chethik << endl;
- return 0;
- }
- for (int t = 0; t < repit; t++)
- {
- temp = 0;
- temp_index = 0;
- for (int i = 0; i < SIZE; i++) // выбор элемента через который будем делать 0
- {
- if (arr[i][0] != 0)
- {
- temp = arr[i][0];
- temp_index = i;
- break;
- }
- }
- if (temp == 0)
- {
- cout << "Определитель матрицы равен 0" << endl;
- return 0;
- }
- double k = 0; // коэффициент пропорциональности
- for (int i = 0; i < SIZE; i++) // умножение строчки на коэффициент пропорциональности и вычитание ее из всех остальных
- {
- if (i != temp_index)
- {
- k = arr[i][0] / temp;
- for (int j = 0; j < SIZE; j++)
- {
- arr[i][j] = arr[i][j] - arr[temp_index][j] * k;
- }
- }
- }
- if (temp_index % 2 == 0)
- chethik = chethik * temp;
- else
- chethik = -chethik * temp;
- SIZE--; // уменьшаем размер матрицы
- arr.erase(arr.begin()); // делаем вектор на 1 меньше(удаляем 1 столбец)
- for (int i = 0; i < SIZE; i++) // удаляем строчку
- {
- arr[i].erase(arr[i].begin() + temp_index);
- }
- if (SIZE == 1)
- chethik = chethik * arr[0][0];
- }
- cout << "Определитель = " << chethik << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement