Answer to Question #185814 in C++ for muhammad

Question #185814

A designer in 3D graphics company wants to design a matrix as a two-dimensional array. The size of 2D array could be the last two digit of arid number. Initially he creates a class matrix that provides the member function to check that no array index is out of bounds. Make the member data in the matrix class a 10-by-10 array. A constructor should allow the programmer to specify the actual dimensions of the matrix (provided they’re less than 10 by 10). The member functions that access data in the matrix will now need two index numbers: one for each dimension of the array. Here’s what a fragment of a main() program that operates on such a class might look like:

If my Arid Number is  20-Arid-254 then:   // in case of zero consider next digit

 matrix m1(5, 4); // define a matrix object

 int temp = 12345; // define an int value

m1.putel(7, 4, temp); // insert value of temp into matrix at 7,4

temp = m1.getel(7, 4); // obtain value from matrix at 7,4



1
Expert's answer
2021-04-26T15:39:30-0400
#include <iostream>
using namespace std;

class Matrix
{
private:
    //pointer of 2D array
    int **data;
    int row, column;

public:
    //Define constuctor
    Matrix(int r, int c)
    {
        //initialization of row and column
        row = r;
        column = c;
        //out of bound check
        if (!checkOutOfBounds(row, column))
        {
            //assign new value to row and col
            data = new int *[row];
            for (int i = 0; i < row; ++i)
                data[i] = new int[column];
            cout << "A 2D array of size" << row << "x" << column << "has been created" << endl;
            for (int i = 0; i < row; i++)
            {
                for (int j = 0; j < column; j++)
                {
                    data[i][j] = 0;
                }
            }
        }
        //show error
        else
        {
            cout << "The size of dimension has been exceeded,please check!" << endl;
        }
    }

    //check dimension of matrix is out of bounds
    bool checkOutOfBounds(int r, int c)
    {
        //dimension of array should not be greater than 10 and not less than 1
        if (r>10 || c>10 || r< 1 || c< 1)
            return true;
        else
            return false;
    }

    //function to access data by its index positions
    int getEl(int r, int c)
    {
        //return -1 if index position is out of bounds
        if (r>row || c>column || r<0 || c<0)
        {
            cout << "The position of index " << r << "," << c << " are out of bound!" << endl;
            return -1;
        }
        //return the location r, c
        else
            return data[r][c];
    }

    //function to sets the data in the matrix at the index position
    void putEl(int r, int c, int el)
    {
        //show the error messages if the index position are out of bounds
        if (r>row || c>column || r<0 || c<0)
            cout << "Index positions " << r << "," << c << " are out of bound!" << endl;
        // put the element at the position r, c
        else
        {
            data[r][c] = el;
            cout << "The position of entered values are at(" << r << "," << c << ") to " << el << endl;
        }
    }
};

int main()
{
    string aridNumber = "20-ARID-888";
    cout << "My arid number is " << aridNumber << endl;

    //define matrix
    Matrix m1(8, 8);

    //define a value to temp
    int temp = 12345;

    //insertion of values into matrix
    m1.putEl(7, 4, temp);

    //display the values
    temp = m1.getEl(7, 4);
    if (temp != -1)
        cout << "The values at 7,4 of the matrix is:" <<temp<< endl;

    cout << "\n-------------------------------------------------------------------------------------------------------\n";
    cout << "Test the code"<<endl;
    int temp1 = 36;

    m1.putEl(9, 9, temp1);

    temp1 = m1.getEl(9,1);
    if (temp1!= -1)
        cout << "The value at 9,1 of the matrix is: " << temp1 << endl;

    int temp3 = m1.getEl(6, 1);
    if (temp3 != -1)
        cout << "The value at 6,1 of the matrix is: " << temp3 << endl;

    return 0;
}

Output:





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
APPROVED BY CLIENTS