Answer to Question #315706 in C++ for khan

Question #315706

class Matrix {2x2, 3x3 and 4x4 }private data members:

1. int **matrix

2. int row

3. int col

class public member functions:

1. Matrix (int n1, int n2, int n3, int n4, int row = 2, int col = 2)

2. Matrix (int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8, int n9, int row = 3,

int col = 3)

3. Matrix (int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8, int n9, int n10, int

n11, int n12, int n13, int n14, int n15, int n16, int row = 4, int col = 4)

4. Matrix(const Matrix &m)

5. ~Matrix()

6. int getRow()

7. int getCol()

8. int getValue(int row, int col)

9. void setValue(int row, int col, int value)

10. int Total()

11. double Average()

12. int RowTotal(int row)

13. int ColumnTotal(int col)

14. int HighestInRow(int row)

15. int LowestInRow(int row)

16. Matrix Transpose()

17. int LeftDiagonalTotal()

18. int RightDiagonalTotal()

19. Matrix Add(Matrix m)

20. Matrix Subtract(Matrix m)

21. Matrix Multiply(Matrix m)

22. int FindkSmallest(int k)

23. int FindkLargest(int k)



1
Expert's answer
2022-03-25T12:10:29-0400
class Matrix {
private:
    int **matrix;
    int row;
    int col;
    void sort(int arr[]);


public:
    Matrix(int row, int col);
    Matrix(int n1, int n2, int n3, int n4, int row = 2, int col = 2);
    Matrix (int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8, int n9, int row = 3,
            int col = 3);
    Matrix (int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8, int n9, int n10,
            int n11, int n12, int n13, int n14, int n15, int n16, int row = 4, int col = 4);
    Matrix(const Matrix &m);
    ~Matrix();
    int getRow() const;
    int getCol() const;
    int getValue(int r, int c);
    void setValue(int r, int c, int value);
    int Total();
    double Average();
    int RowTotal(int r);
    int ColumnTotal(int c);
    int HighestInRow(int r);
    int LowestInRow(int r);
    Matrix Transpose();
    int LeftDiagonalTotal();
    int RightDiagonalTotal();
    Matrix Add(Matrix m);
    Matrix Subtract(Matrix m);
    Matrix Multiply(Matrix m);
    int FindkSmallest(int k);
    int FindkLargest(int k);
};


Matrix::Matrix(int row, int col) 
    : row(row), col(col)
{}
Matrix::Matrix(int n1, int n2, int n3, int n4, int row, int col) 
    : row(row), col(col)
{
    matrix = new int*[row];
    for (int i=0; i<row; i++) {
        matrix[i] = new int[col];
    }
    matrix[0][0] = n1;  matrix[0][1] = n2;
    matrix[1][0] = n3;  matrix[1][1] = n4;
}


Matrix::Matrix (int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8, int n9, int row, int col)
    : row(row), col(col)
{
    matrix = new int*[row];
    for (int i=0; i<row; i++) {
        matrix[i] = new int[col];
    }
    matrix[0][0] = n1;  matrix[0][1] = n2;  matrix[0][2] = n3;
    matrix[1][0] = n4;  matrix[1][1] = n5;  matrix[1][2] = n6;
    matrix[2][0] = n7;  matrix[2][1] = n8;  matrix[2][2] = n9;
}            


Matrix::Matrix (int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8, int n9, int n10,
                int n11, int n12, int n13, int n14, int n15, int n16, int row, int col)
    : row(row), col(col)
{
    matrix = new int*[row];
    for (int i=0; i<row; i++) {
        matrix[i] = new int[col];
    }
    matrix[0][0] = n1;  matrix[0][1] = n2;  matrix[0][2] = n3;  matrix[0][3] = n4;
    matrix[1][0] = n5;  matrix[1][1] = n6;  matrix[1][2] = n7;  matrix[1][3] = n8;
    matrix[2][0] = n9;  matrix[2][1] = n10; matrix[2][2] = n11; matrix[2][3] = n12;
    matrix[3][0] = n13; matrix[3][1] = n14; matrix[3][2] = n15; matrix[3][3] = n16;
}  


Matrix::Matrix(const Matrix &m) 
    : row(m.row), col(m.col)
{
    matrix = new int*[row];
    for (int i=0; i<row; i++) {
        matrix[i] = new int[col];
        for (int j=0; j<col; j++) {
            matrix[i][j] = m.matrix[i][j];
        }
    }


}
Matrix::~Matrix()
{
    for (int i=0; i<row; i++) {
        delete [] matrix[i];
    }
    delete matrix;
}


int Matrix::getRow() const
{
    return row;
}


int Matrix::getCol() const
{
    return col;
}


int Matrix::getValue(int r, int c) 
{
    return matrix[r][c];
}
void Matrix::setValue(int r, int c, int value)
{
    matrix[r][c] = value;
}
int Matrix::Total()
{
    int total = 0;
    for (int r=0; r<row; r++) {
        for (int c=0; c<col; c++) {
            total += matrix[r][c];
        }
    }
    return total;
}
double Matrix::Average()
{
    return static_cast<double>(Total()) / (row*col);
}
int Matrix::RowTotal(int r) 
{
    int total = 0;
    for (int c=0; c<col; c++) {
        total += matrix[r][c];
    }
    return total;
}
int Matrix::ColumnTotal(int c)
{
    int total = 0;
    for (int r=0; r<row; r++) {
        total += matrix[r][c];
    }
    return total;
}
int Matrix::HighestInRow(int r)
{
    int h = matrix[r][0];
    for (int c=0; c<col; c++) {
        if (h < matrix[r][c]) {
            h = matrix[r][c];
        }
    }
    return h;
}
int Matrix::LowestInRow(int r) 
{
    int l = matrix[r][0];
    for (int c=0; c<col; c++) {
        if (l > matrix[r][c]) {
            l = matrix[r][c];
        }
    }
    return l;
}
Matrix Matrix::Transpose()
{
    Matrix Tr(col, row);
    for (int r=0; r<row; r++) {
        for (int c=0; c<col; c++) {
            Tr.matrix[c][r] = matrix[r][c];
        }
    }
    return Tr;
}
int Matrix::LeftDiagonalTotal() 
{
    int total = 0;
    for (int i=0; i<row; i++) {
        total += matrix[i][i];
    }
    return total;
}
int Matrix::RightDiagonalTotal()
{
    int total = 0;
    for (int r=0; r<row; r++) {
        total += matrix[r][col-1-r];
    }
    return total;
}
Matrix Matrix::Add(Matrix m)
{
    Matrix res(row, col);


    for (int r=0; r<row; r++) {
        for (int c=0; c<col; c++) {
            res.matrix[r][c] = matrix[r][c] + m.matrix[r][c];
        }
    }
    return res;
}
Matrix Matrix::Subtract(Matrix m) 
{
    Matrix res(row, col);


    for (int r=0; r<row; r++) {
        for (int c=0; c<col; c++) {
            res.matrix[r][c] = matrix[r][c] - m.matrix[r][c];
        }
    }
    return res;
}
Matrix Matrix::Multiply(Matrix m)
{
    Matrix res(row, m.col);


    for (int r=0; r<row; r++) {
        for (int c=0; c<m.col; c++) {
            res.matrix[r][c] = 0;
            for (int k=0; k<col; k++)
            res.matrix[r][c] += matrix[r][k] * m.matrix[k][c];
        }
    }
    return res;
}
void Matrix::sort(int arr[])
{
    int n = row*col;


    for (int r=0; r<row; r++) {
        for (int c=0; c<col; c++) {
            arr[r*row + c] = matrix[r][c];
        }
    }


    for (int i=0; i<n-1; i++) {
        int m = i;
        for (int j=i+1; i<n; i++) {
            if (arr[j] < arr[m]) {
                m = j;
            }
        }
        int t = arr[i];
        arr[i] = arr[m];
        arr[m] = t;
    }
}
int Matrix::FindkSmallest(int k)
{
    int *arr = new int[row*col];
    sort(arr);
    int res = arr[k-1];
    delete [] arr;
    return res;
}
int Matrix::FindkLargest(int k)
{
    int *arr = new int[row*col];
    sort(arr);
    int res = arr[row*col-k];
    delete [] arr;
    return res;
}

Need a fast expert's response?

Submit order

and get a quick answer at the best price

for any assignment or question with DETAILED EXPLANATIONS!

Comments

No comments. Be the first!

Leave a comment

LATEST TUTORIALS
New on Blog