Due on 2016-02-27, 23:55 IST
You have to implement a matrix ADT using concepts of C++ classes taught in the lectures. The input matrices would be square matrices. The class must support the following functions:
1. Matrix Addition
2. Matrix Subtraction
3. Matrix Multiplication
The program should take as input: dimension of a square matrix N, two matrices of size N x N with integer values, and one operator symbol (+, - ,*). It must perform the corresponding operation using member functions of Matrix class.
You are supposed to implement the following functions of the class MatrixADT
matrixType add(matrixType M1, matrixType M2): The function should add matrices M1 and M2 and store the result in "resultMatrix". The function should return the "resultMatrix".
matrixType subtract(matrixType M1, matrixType M2):
The function should subtract matrix M2 from M1 and store the result in "resultMatrix". The function should return the "resultMatrix".
matrixType multiply(matrixType M1, matrixType M2):
The function should multiply matrices M1 and M2 and store the result in "resultMatrix". Be careful, it is M1*M2 and not M2*M1. The function should return the "resultMatrix".
INPUT:
In the first line, one integer which is the dimension of the matrix and one operator (one of +, - or *)
Two NxN matrices one after the other, supplied one row at a time.
OUTPUT:
Resultant matrix after performing the specified operation, one row at a time. For subtraction, if A is the first matrix and B is the second matrix, perform A-B.
CONSTRAINTS:
The inputs will satisfy the following constraints:
1<=N<=10
There is no need to validate the value of N.
There are no constraints on the values of the entries of the matrices.
PROGRAM :
#include <cstring>
#include <cstdio>
using namespace std;
struct matrixType{
int matDimension;
int matValues[10][10];
};
class MatrixADT{
private:
matrixType resultMatrix;
public:
//Member function declarations
void intializeResultMatrix(int);
matrixType add(matrixType, matrixType);
matrixType subtract(matrixType,matrixType);
matrixType multiply(matrixType,matrixType);
void printResult();
};
//Intialize Result Matrix entries to zero
void MatrixADT::intializeResultMatrix(int dim){
int i,j;
resultMatrix.matDimension = dim;
for (i=0;i<resultMatrix.matDimension;i++){
for (j=0; j<resultMatrix.matDimension;j++){
resultMatrix.matValues[i][j] = 0;
}
}
}
CODING:
matrixType MatrixADT::add(matrixType M1, matrixType M2){
int i=0,j=0;
for (i=0;i<resultMatrix.matDimension;i++)
{
for (j=0; j<resultMatrix.matDimension;j++){
resultMatrix.matValues[i][j] = M1.matValues[i][j] + M2.matValues[i][j];
}
}
return resultMatrix;
}
//SUBTRACT
matrixType MatrixADT::subtract(matrixType M1, matrixType M2)
{
int i=0,j=0;
for (i=0;i<resultMatrix.matDimension;i++)
{
for (j=0; j<resultMatrix.matDimension;j++){
resultMatrix.matValues[i][j] = M1.matValues[i][j] - M2.matValues[i][j];
}
}
return resultMatrix;
}
//MULTIPLY
matrixType MatrixADT::multiply(matrixType M1, matrixType M2){
int i=0,j=0,ii,jj;
for (i=0;i<resultMatrix.matDimension;i++)
{
for (j=0; j<resultMatrix.matDimension;j++)
{
for(ii=0;ii<resultMatrix.matDimension;ii++)
{
for(jj=0;jj<resultMatrix.matDimension;jj++)
{
if(j==ii)
{
resultMatrix.matValues[i][jj] += M1.matValues[i][j] * M2.matValues[ii][jj];
}
}
}
}
}
return resultMatrix;
}
PROGRAM :
int main(){
MatrixADT maX;
matrixType M1, M2;
char op;
int i,j,dim;
scanf("%d %c",&dim, &op);
M1.matDimension = dim;
M2.matDimension = dim;
maX.intializeResultMatrix(dim);
//Accept matrix entries
for (i=0;i<dim;i++)
for (j=0; j<dim;j++){
scanf("%d",&M1.matValues[i][j]);
}
for (i=0;i<dim;i++)
for (j=0; j<dim;j++){
scanf("%d",&M2.matValues[i][j]);
}
//Call MatrixADT member function depending on operator
if (op=='+'){
maX.add(M1,M2);
}
else if (op=='-'){
maX.subtract(M1,M2);
}
else{
maX.multiply(M1,M2);
}
maX.printResult();
return 0;
}
void MatrixADT::printResult(){
int i,j;
for (i=0;i<resultMatrix.matDimension;i++){
for (j=0; j<resultMatrix.matDimension-1;j++){
printf("%d ",resultMatrix.matValues[i][j]);
}
printf("%d\n",resultMatrix.matValues[i][j]);
}
printf("Done");
}
No comments:
Post a Comment