Добавил:
vvrstcnho
Рад, если кому-то помог
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы С++ (для ИВТ) / Готовые лабы С++ / Лаба1 / Laba 1 (11)
.cpp#include <iostream>
#include <vector>
#include <windows.h>
using namespace std;
class SquareMatrix {
private:
vector<vector<int>> data;
int size;
int determinantHelper(vector<vector<int>> mat, int n) {
if (n == 1) return mat[0][0];
if (n == 2) return mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0];
int det = 0;
for (int col = 0; col < n; col++) {
vector<vector<int>> submat(n-1, vector<int>(n-1));
for (int i = 1; i < n; i++) {
int subcol = 0;
for (int j = 0; j < n; j++) {
if (j != col) {
submat[i-1][subcol++] = mat[i][j];
}
}
}
det += (col % 2 == 0 ? 1 : -1) * mat[0][col] * determinantHelper(submat, n-1);
}
return det;
}
public:
SquareMatrix(int n) : size(n) {
data.resize(n, vector<int>(n, 0));
cout << "Создана квадратная матрица " << n << "x" << n << endl;
}
void input() {
cout << "Введите элементы матрицы " << size << "x" << size << ":" << endl;
for (int i = 0; i < size; i++) {
cout << "Строка " << (i+1) << ": ";
for (int j = 0; j < size; j++) {
cin >> data[i][j];
}
}
}
void output() {
cout << "Матрица:" << endl;
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
cout << data[i][j] << " ";
}
cout << endl;
}
}
int trace() {
int tr = 0;
for (int i = 0; i < size; i++) {
tr += data[i][i];
}
return tr;
}
int determinant() {
return determinantHelper(data, size);
}
};
int main() {
SetConsoleOutputCP(65001);
int n;
cout << "Введите размер квадратной матрицы: ";
cin >> n;
SquareMatrix m(n);
m.input();
cout << "\nРезультаты:" << endl;
m.output();
cout << "След матрицы: " << m.trace() << endl;
cout << "Определитель: " << m.determinant() << endl;
return 0;
}
Соседние файлы в папке Лаба1
