Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Matrix {
- private:
- int **mas;
- int n;
- void Create() {
- mas = new int *[n];
- for (int i = 0; i < n; i++)
- mas[i] = new int[n];
- }
- void GetMatr(int **mas, int **p, int i, int j, int m) {
- int k, l, d1, d2;
- d1 = 0;
- for (k = 0; k < m - 1; k++) {
- if (k == i) d1 = 1;
- d2 = 0;
- for (l = 0; l < m - 1; l++) {
- if (l == j) d2 = 1;
- p[k][l] = mas[k + d1][l + d2];
- }
- }
- }
- int Det(int **mas, int n) {
- int i, j, k, m;
- int **p;
- p = new int *[n];
- for (i = 0; i < n; i++)
- p[i] = new int[n];
- j = 0;
- k = 1;
- m = n - 1;
- if (n < 1) {
- cout << "Определитель вычислить невозможно";
- }
- if (n == 1) {
- j = mas[0][0];
- return (j);
- }
- if (n == 2) {
- j = mas[0][0] * mas[1][1] - (mas[1][0] * mas[0][1]);
- return (j);
- }
- if (n > 2) {
- for (i = 0; i < n; i++) {
- GetMatr(mas, p, i, 0, n);
- j = j + k * mas[i][0] * Det(p, m);
- k = -k;
- }
- }
- return (j);
- }
- public:
- Matrix(int i) : n(i) { Create(); }
- void setMatrix() {
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < n; j++) {
- cout << "mas[" << i << "][" << j << "]= ";
- cin >> mas[i][j];
- }
- }
- }
- void trans() {
- int **tempT;
- tempT = new int *[n];
- for (int i = 0; i < n; i++)
- tempT[i] = new int[n];
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < n; j++) {
- tempT[j][i] = mas[i][j];
- }
- }
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < n; j++) {
- mas[i][j] = tempT[i][j];
- }
- }
- }
- int determinant() {
- int m = Det(mas, n);
- return m;
- }
- void edit(int i, int j, int m){
- mas[i][j] = m;
- }
- void print() {
- int i, j;
- for (i = 0; i < n; i++) {
- for (j = 0; j < n; j++)
- cout << mas[i][j] << " ";
- cout << endl;
- }
- }
- };
- int main() {
- int n;
- cout<< "n: ";
- cin >> n;
- Matrix M(n);
- M.setMatrix();
- cout << M.determinant() << endl;
- M.trans();
- M.print();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement