Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
1
Добавлен:
01.11.2025
Размер:
2.39 Кб
Скачать
#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