Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstring>
- class Matrix
- {
- double** A;
- int n, m;
- public:
- Matrix (int n, int m)
- {
- A = new double* [n];
- for (int i = 0; i < n; i ++)
- {
- A[i] = new double [m];
- memset (A[i], 0, m*sizeof(double));
- }
- this->n = n;
- this->m = m;
- }
- Matrix (double** B, int k, int p)
- {
- for (int i = 0; i < k; i ++)
- memcpy (A[i], B[i], p);
- n = k;
- m = p;
- }
- double det () //нахождение определителя
- {
- int l = 0;
- double d = 0;
- double sum11 = 1, sum12 = 0, sum21 = 1, sum22 = 0;
- // находим детерминант
- for (int i = 0; i < n; i++)
- {
- sum11 = 1;
- l = 2 * n - 1 - i;
- sum21 = 1;
- for (int j = 0; j < n; j++)
- {
- sum21 *= A[j][l % n];
- l --;
- sum11 *= A[j][(j + i) % n];
- }
- sum22 += sum21;
- sum12 += sum11;
- }
- d = sum12 - sum22;
- return d;
- }
- double Get (int i, int j)
- {
- return A[i][j];
- }
- int* Size ()
- {
- int* s = new int[2];
- int[0] = n;
- int[1] = m;
- }
- Matrix* Multiple (Matrix* B)
- {
- int* sizeB = B->Size();
- double** C = new double* [n];
- for (int i = 0; i < n; i ++)
- {
- C[i] = new double[sizeB[1]];
- memset (C[i], 0, sizeB[1]*sizeof (double));
- }
- for (int i = 0; i < n; i ++)
- for (int j = 0; j < sizeB[1]; j ++)
- for (int k = 0; k < m; k ++)
- {
- C[i][j] += A[i][k] + B->Get (k, j);
- }
- Matrix* Result = new Matrix (C, n, sizeB[1]);
- return Result;
- }
- Matrix* Invert ()
- {
- double d = det ();
- if (d == 0)
- return 0;
- else
- {
- }
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment