Many mathematical problems require the addition, subtraction, and multiplication of two matrices.
Write an ADT Matrix. You may use the following class definition.
const int MAX_ROWS = 10;
const int MAX_COLS = 10;
class MatrixType
{
public:
MatrixType();
void MakeEmpty();
void SetSize(int rowsSize, int colSize);
void StoreItem(int item, int row, int col);
void Add(MatrixType otherOperand, MatrixType& result);
void Sub(MatrixType otherOperand, MatrixType& result);
void Mult(MatrixType otherOperand, MatrixType& result);
void Print(ofstream& outfile);
bool AddSubCompatible(MatrixType otherOperand);
bool MultCompatible(MatrixType otherOperand);
private:
int values[MAX_ROWS][MAX_COLS];
int numRows;
int numCols;
};
Before you start looking at how to implement this class, you must determine and document the
appropriate preconditions and postconditions for each operation. Note that the class provides the
member functions to allow the client to determine if the binary matrix operations are possible. Before
this class can become a permanent part of your program library, it must be thoroughly tested. Write a
menu driven testing program to test your MatrixType.
Test Driver
The test driver should handle the following options. (See processing notes for definition of <matrix>).
GetNewMatrix <matrix>
Number of rows and number of columns are on the next line.
Values for each row and column
AddMatrices <matrix> <matrix> <matrix>
Add first and second, leaving the result in the third
SubMatrices <matrix> <matrix> <matrix>
Subtract second from first, leaving the result in the third
MultiplyMatrices <matrix> <matrix> <matrix>
Multiply first and second, leaving the result in the third
PrintMatrix <matrix>
Print the matrix one row per line on DataOut
Quit
Processing Notes
1. <matrix> is a number between 0 and 9. This value is used as an index into an array of
MatrixType.
2. The main function must include a Switch statement where the case expression is a user-defined
enumeration type. This means that the command is recognized and its enumeration equivalent
is sent back to be used in the case statement.
3. The driver must ensure the preconditions of the member functions of MatrixType. Throw an
exception if an error occurs and continue processing.
Deliverables
• Your MatrixType class
• Your test driver (Similar to the fraction example)
• Your test plan and input to the test driver (See page 122 for an example)
• The output file from the test driver
• A copy of the screen from the run of the test driver