Q.No.2: 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
#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-254";
cout << "My arid number is " << aridNumber << endl;
//define matrix
Matrix m1(5, 4);
//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:
Comments
Leave a comment