tolord

Untitled

May 22nd, 2015
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.64 KB | None | 0 0
  1. #include <cstring>
  2.  
  3. class Matrix
  4. {
  5.     double** A;
  6.     int n, m;
  7. public:
  8.     Matrix (int n, int m)
  9.     {
  10.         A = new double* [n];
  11.         for (int i = 0; i < n; i ++)
  12.         {
  13.             A[i] = new double [m];
  14.             memset (A[i], 0, m*sizeof(double));
  15.         }
  16.         this->n = n;
  17.         this->m = m;
  18.     }
  19.     Matrix (double** B, int k, int p)
  20.     {
  21.         for (int i = 0; i < k; i ++)
  22.             memcpy (A[i], B[i], p);
  23.         n = k;
  24.         m = p;
  25.     }
  26.     double det ()   //нахождение определителя
  27.     {
  28.     int l = 0;
  29.     double d = 0;
  30.     double sum11 = 1, sum12 = 0, sum21 = 1, sum22 = 0;
  31.     // находим детерминант
  32.             for (int i = 0; i < n; i++)
  33.             {
  34.                 sum11 = 1;
  35.                 l = 2 * n - 1 - i;
  36.                 sum21 = 1;
  37.                 for (int j = 0; j < n; j++)
  38.                 {
  39.                     sum21 *= A[j][l % n];
  40.                     l --;
  41.                     sum11 *= A[j][(j + i) % n];
  42.                 }
  43.                 sum22 += sum21;
  44.                 sum12 += sum11;
  45.             }
  46.             d = sum12 - sum22;
  47.             return d;
  48.     }
  49.     double Get (int i, int j)
  50.     {
  51.         return A[i][j];
  52.     }
  53.     int* Size ()
  54.     {
  55.         int* s = new int[2];
  56.         int[0] = n;
  57.         int[1] = m;
  58.     }
  59.     Matrix* Multiple (Matrix* B)
  60.     {
  61.         int* sizeB = B->Size();
  62.         double** C = new double* [n];
  63.         for (int i = 0; i < n; i ++)
  64.         {
  65.             C[i] = new double[sizeB[1]];
  66.             memset (C[i], 0, sizeB[1]*sizeof (double));
  67.         }
  68.         for (int i = 0; i < n; i ++)
  69.             for (int j = 0; j < sizeB[1]; j ++)
  70.                 for (int k = 0; k < m; k ++)
  71.                 {
  72.                     C[i][j] += A[i][k] + B->Get (k, j);
  73.                 }
  74.         Matrix* Result = new Matrix (C, n, sizeB[1]);
  75.         return Result;
  76.     }
  77.     Matrix* Invert ()
  78.     {
  79.         double d = det ();
  80.         if (d == 0)
  81.             return 0;
  82.         else
  83.         {
  84.            
  85.         }
  86.     }
  87. };
Advertisement
Add Comment
Please, Sign In to add comment