Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- class Matrix
- {
- private:
- int n,m;
- float **data;
- public:
- Matrix();
- Matrix(int M, int N);
- Matrix(float **a, int N, int M);
- void swap(int i, int j);
- Matrix transpose();
- Matrix add(Matrix B);
- Matrix sub(Matrix B);
- bool equal(Matrix B);
- Matrix prod(Matrix B);
- void display();
- };
- Matrix::Matrix() //Constructor for user to enter the value for matrix
- {
- cout<<"Enter the number of row: ";
- cin >> n;
- cout<<"Enter the number of colum: ";
- cin >> m;
- data = new float*[n];
- for (int i = 0; i < n; i++)
- {
- data[i] = new float[m];
- for (int j = 0; j < m; j++)
- {
- cout << "Enter the value of index [" << i << "][" << j <<"]: ";
- cin >> data[i][j];
- }
- }
- }
- Matrix::Matrix(int N, int M) //Create
- {
- n = N;
- m = M;
- data = new float*[n];
- for (int i = 0; i < n; i++)
- {
- data[i] = new float[m];
- for (int j = 0; j < m; j++)
- {
- data[i][j] = 0;
- }
- }
- }
- Matrix::Matrix(float **a, int N, int M)
- {
- n = N;
- m = M;
- data = new float *[n];
- for (int i = 0; i < n; i++)
- {
- data[i] = new float[m];
- for (int j = 0; j < m; j++)
- {
- data[i][j] = a[i][j];
- }
- }
- }
- void Matrix::swap(int i, int j)
- {
- for(int k = 0; k < n; k++)
- {
- data[k][k] = data[i][k];
- data[i][k] = data[j][k];
- data[j][k] = data[k][k];
- }
- }
- Matrix Matrix::transpose()
- {
- Matrix A(m,n);
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- A.data[j][i] = data[i][j];
- }
- return A;
- }
- Matrix Matrix::add(Matrix B)
- {
- Matrix A(n,m);
- Matrix C;
- if ((A.n == B.n) && (A.m == B.m))
- {
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- C.data[i][j] = A.data[i][j] + B.data[i][j];
- }
- }
- }
- return C;
- }
- Matrix Matrix::sub(Matrix B)
- {
- Matrix A(n,m);
- Matrix C;
- if ((A.n == B.n) && (A.m == B.m))
- {
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- C.data[i][j] = A.data[i][j] - B.data[i][j];
- }
- }
- }
- return C;
- }
- bool Matrix::equal(Matrix B)
- {
- Matrix A(n,m);
- if ((A.n == B.n) && (A.m == B.m))
- {
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- if (A.data[i][j] = B.data[i][j])
- return true;
- }
- }
- return false;
- }
- return false;
- }
- Matrix Matrix::prod(Matrix B)
- {
- Matrix A(n,m);
- Matrix C;
- if (A.n == B.m)
- {
- for (int i = 0; i < B.n ; i++)
- {
- for (int j = 0; j < A.m; j++)
- {
- for( int k = 0; k <B.m; k++)
- {
- C.data[i][j] += A.data[i][k] * B.data[k][j];
- }
- }
- }
- }
- return C;
- }
- void Matrix::display()
- {
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- cout<<" "<<data[i][j];
- }
- cout<< endl;
- }
- }
- int main()
- {
- int n,m;
- /*cout<<"Enter the value of matrix from keyboard"<< endl;
- Matrix M;
- cout<<"Matrix is: "<< endl;
- M.display();
- cout<<"Create matrix of 0" << endl;
- Matrix N(2,4);
- N.display();
- */
- cout << "Create Matrix C from 2D Array c:"<< endl;
- cout << "Enter number of rows: "; cin >> n;
- cout << "Enter number of columns: "; cin >> m;
- float **a = new float*[n];
- for (int i = 0; i < n; i++)
- {
- a[i] = new float[m];
- for (int j = 0; j < m; j++)
- {
- cout << "Enter the element of index [" << i << "][" << j <<"]: ";
- cin >> a[i][j];
- }
- }
- Matrix C(a, n, m);
- cout << "Matrix C:\n";
- C.display(); cout << endl;
- //cout<<"Swap row i and j in matrix C"<< endl;
- //C.swap(1,2);
- cout<<"Transpose of matrix C"<< endl;
- C.transpose();
- C.display();
- system("pause");
- return 0;
- }
Add Comment
Please, Sign In to add comment