Guest User

Untitled

a guest
Apr 19th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.71 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. class Matrix
  7. {
  8.     private:
  9.         int n,m;
  10.         float **data;
  11.     public:
  12.         Matrix();
  13.         Matrix(int M, int N);
  14.         Matrix(float **a, int N, int M);
  15.         void swap(int i, int j);
  16.         Matrix transpose();
  17.         Matrix add(Matrix B);
  18.         Matrix sub(Matrix B);
  19.         bool equal(Matrix B);
  20.         Matrix prod(Matrix B);
  21.         void display();
  22. };
  23.  
  24. Matrix::Matrix()            //Constructor for user to enter the value for matrix
  25. {
  26.         cout<<"Enter the number of row: ";
  27.         cin >> n;
  28.         cout<<"Enter the number of colum: ";
  29.         cin >> m;
  30.         data = new float*[n];
  31.         for (int i = 0; i < n; i++)
  32.         {
  33.             data[i] = new float[m];
  34.              for (int j = 0; j < m; j++)
  35.              {
  36.              cout << "Enter the value of index [" << i << "][" << j <<"]: ";
  37.              cin >> data[i][j];
  38.             }  
  39.         }
  40. }
  41.  
  42. Matrix::Matrix(int N, int M)        //Create
  43. {
  44.     n = N;
  45.     m = M;
  46.     data = new float*[n];
  47.     for (int i = 0; i < n; i++)
  48.     {
  49.         data[i] = new float[m];
  50.         for (int j = 0; j < m; j++)
  51.         {
  52.             data[i][j] = 0;
  53.         }
  54.     }
  55. }
  56.  
  57. Matrix::Matrix(float **a, int N, int M)
  58. {
  59.     n = N;
  60.     m = M;
  61.     data = new float *[n];
  62.  
  63.     for (int i = 0; i < n; i++)
  64.     {
  65.         data[i] = new float[m];
  66.         for (int j = 0; j < m; j++)
  67.         {
  68.             data[i][j] = a[i][j];
  69.         }
  70.     }
  71. }
  72.  
  73. void Matrix::swap(int i, int j)
  74. {
  75.         for(int k = 0; k < n; k++)
  76.         {
  77.             data[k][k] = data[i][k];
  78.             data[i][k] = data[j][k];
  79.             data[j][k] = data[k][k];
  80.         }
  81. }
  82.  
  83.  
  84. Matrix Matrix::transpose()
  85. {
  86.      Matrix A(m,n);
  87.      for (int i = 0; i < n; i++)
  88.      {
  89.          for (int j = 0; j < m; j++)
  90.              A.data[j][i] = data[i][j];
  91.      }
  92.      return A;
  93. }
  94.  
  95. Matrix Matrix::add(Matrix B)
  96. {
  97.     Matrix A(n,m);
  98.     Matrix C;
  99.     if ((A.n == B.n) && (A.m == B.m))
  100.     {
  101.         for (int i = 0; i < n; i++)
  102.         {
  103.             for (int j = 0; j < m; j++)
  104.             {
  105.                 C.data[i][j] = A.data[i][j] + B.data[i][j];
  106.             }
  107.         }
  108.     }
  109.     return C;
  110. }
  111.  
  112. Matrix Matrix::sub(Matrix B)
  113. {
  114.     Matrix A(n,m);
  115.     Matrix C;
  116.     if ((A.n == B.n) && (A.m == B.m))
  117.     {
  118.         for (int i = 0; i < n; i++)
  119.         {
  120.             for (int j = 0; j < m; j++)
  121.             {
  122.                 C.data[i][j] = A.data[i][j] - B.data[i][j];
  123.             }
  124.         }
  125.     }
  126.     return C;
  127. }
  128.  
  129. bool Matrix::equal(Matrix B)
  130. {
  131.     Matrix A(n,m);
  132.     if ((A.n == B.n) && (A.m == B.m))
  133.     {
  134.         for (int i = 0; i < n; i++)
  135.         {
  136.             for (int j = 0; j < m; j++)
  137.             {
  138.                 if (A.data[i][j] = B.data[i][j])
  139.                     return true;
  140.             }
  141.         }
  142.         return false;
  143.     }
  144.     return false;
  145. }
  146.  
  147. Matrix Matrix::prod(Matrix B)
  148. {
  149.     Matrix A(n,m);
  150.     Matrix C;
  151.     if (A.n == B.m)
  152.     {
  153.         for (int i = 0; i < B.n ; i++)
  154.         {
  155.             for (int j = 0; j < A.m; j++)
  156.             {
  157.                 for( int k = 0; k <B.m; k++)
  158.                 {
  159.                     C.data[i][j] += A.data[i][k] * B.data[k][j];
  160.                 }
  161.             }
  162.         }
  163.     }
  164.     return C;
  165.  
  166. }
  167.  
  168. void Matrix::display()
  169. {
  170.     for (int i = 0; i < n; i++)
  171.         {
  172.             for (int j = 0; j < m; j++)
  173.             {
  174.                 cout<<"    "<<data[i][j];
  175.             }
  176.             cout<< endl;
  177.         }
  178. }
  179.  
  180. int main()
  181. {
  182.     int n,m;
  183.     /*cout<<"Enter the value of matrix from keyboard"<< endl;
  184.     Matrix M;
  185.     cout<<"Matrix is: "<< endl;
  186.     M.display();
  187.  
  188.     cout<<"Create matrix of 0" << endl;
  189.     Matrix N(2,4);
  190.     N.display();
  191.     */
  192.     cout << "Create Matrix C from 2D Array c:"<< endl;
  193.     cout << "Enter number of rows: "; cin >> n;
  194.     cout << "Enter number of columns: "; cin >> m;
  195.     float **a = new float*[n];
  196.     for (int i = 0; i < n; i++)
  197.     {
  198.          a[i] = new float[m];
  199.          for (int j = 0; j < m; j++)
  200.          {
  201.              cout << "Enter the element of index [" << i << "][" << j <<"]: ";
  202.              cin >> a[i][j];
  203.          }
  204.     }
  205.     Matrix C(a, n, m);
  206.     cout << "Matrix C:\n";
  207.     C.display(); cout << endl;
  208.  
  209.     //cout<<"Swap row i and j in matrix C"<< endl;
  210.     //C.swap(1,2);
  211.     cout<<"Transpose of matrix C"<< endl;
  212.     C.transpose();
  213.     C.display();
  214.  
  215.     system("pause");
  216.     return 0;
  217. }
Add Comment
Please, Sign In to add comment