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 theyre 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. Heres 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:
long int **Matr;
long int m;
long int n;
void Create()
{
Matr = new long int*[m];
for (int z=0; z<m; z++)
Matr[z] = new long int[n];
}
public:
// constructors and destructor
Matrix(): m(5), n(5) { Create(); }
Matrix(long int i): m(i), n(i) { Create(); }
Matrix(long int i, long int j): m(i), n(j) { Create(); }
~Matrix()
{
for (int z=0; z<m; z++)
delete[] Matr[z];
delete[] Matr;
}
// methods
long int& Element(long int i, long int j)
{
if (i<m && j<n)
return Matr[i][j];
else
cout << "Error: 1";
}
void MultiplyBy(long int x)
{
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
Matr[i][j] *= x;
}
void Display()
{
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
cout.width(4);
cout << Matr[i][j];
}
cout << endl;
}
}
};
int main()
{
Matrix M(5,5);
for (int i=0; i<5; i++)
{
for (int j=0; j<5; j++)
M.Element(i, j) = i+j;
}
M.Display();
cout << "\n After multiply by 5\n" << endl;
M.MultiplyBy(5);
M.Display();
return 0;
}
Comments
Leave a comment