Write a C++ Program to Multiply Two Matrix Using Multi-dimensional Arrays. You can use int or double
2D array and takes it input from user. This program takes two matrices of order r1*c1 and r2*c2
respectively. Then, the program multiplies these two matrices (if possible) and displays it on the screen,
please take input from user.
#include <iostream>
#include <string>
using namespace std;
int getCorrectValue(string message);
void fillMatrix(int matrix[][100],int numberRowsMatrix, int numberColumnsMatrix,int matrixNumber);
void calculateProduct(int matrix1[][100], int matrix2[][100], int product[][100], int numberRowsMatrix1, int numberColumnsMatrix1, int numberRowsMatrix2, int numberColumnsMatrix2);
void displayMatrix(int matrix[][100], int numberRowsMatrix, int numberColumnsMatrix,int matrixNumber);
int main()
{
int matrix1[100][100];
int matrix2[100][100];
int product[100][100];
int numberRowsMatrix1;
int numberColumnsMatrix1;
int numberRowsMatrix2;
int numberColumnsMatrix2;
numberRowsMatrix1=getCorrectValue("Enter the number of rows for matrix 1: ");
numberColumnsMatrix1=getCorrectValue("Enter the number of columns for matrix 1: ");
numberRowsMatrix2=numberColumnsMatrix1-1;
while (numberColumnsMatrix1 != numberRowsMatrix2){
numberRowsMatrix2=getCorrectValue("Enter the number of rows for matrix 2: ");
numberColumnsMatrix2=getCorrectValue("Enter the number of columns for matrix 2: ");
if(numberColumnsMatrix1 != numberRowsMatrix2){
cout << "\nError: the column of the matrix 1 not equal to the row of matrix 2.\n\n";
}
}
fillMatrix(matrix1,numberRowsMatrix1,numberColumnsMatrix1, 1);
fillMatrix(matrix2,numberRowsMatrix2,numberColumnsMatrix2, 2);
displayMatrix(matrix1,numberRowsMatrix1,numberColumnsMatrix1, 1);
displayMatrix(matrix2,numberRowsMatrix2,numberColumnsMatrix2, 2);
calculateProduct(matrix1, matrix2, product,numberRowsMatrix1,numberColumnsMatrix1,numberRowsMatrix2, numberColumnsMatrix2);
displayMatrix(product,numberRowsMatrix1,numberColumnsMatrix2, 3);
system("pause");
return 0;
}
//Get correct value
int getCorrectValue(string message){
int value=-1;
while(value<=0){
cout<<message;
cin>>value;
if(value<=0){
cout<<"\nError: enter value>0!\n\n";
}
}
return value;
}
//Fills matrix
void fillMatrix(int matrix[][100],int numberRowsMatrix, int numberColumnsMatrix,int matrixNumber){
cout << "\nEnter values of matrix "<<matrixNumber<<"\n";
for(int i = 0; i < numberRowsMatrix; i++){
for(int j = 0; j < numberColumnsMatrix; j++){
cout << "Enter elements ["<< i<<"]["<< j << "]: ";
cin >> matrix[i][j];
}
}
}
//Calculates product
void calculateProduct(int matrix1[][100], int matrix2[][100], int product[][100], int numberRowsMatrix1, int numberColumnsMatrix1, int numberRowsMatrix2, int numberColumnsMatrix2){
// Initializing elements of matrix product to 0.
for(int i = 0; i < numberRowsMatrix1; i++){
for(int j = 0; j < numberColumnsMatrix2; j++){
product[i][j] = 0;
}
}
// product matrix matrix1 and matrix2 and storing in array product.
for(int i = 0; i < numberRowsMatrix1; i++){
for(int j = 0; j < numberColumnsMatrix2; j++){
for(int k=0; k<numberColumnsMatrix1; k++)
{
product[i][j] += matrix1[i][k] * matrix2[k][j];
}
}
}
}
//Displays matrix
void displayMatrix(int matrix[][100], int numberRowsMatrix, int numberColumnsMatrix,int matrixNumber)
{
if(matrixNumber==3){
cout << "\nThe product of two matrices:\n";
}else{
cout << "\nThe values of matrix "<<matrixNumber<<":\n";
}
for(int i = 0; i < numberRowsMatrix; i++){
for(int j = 0; j < numberColumnsMatrix; j++){
cout<<matrix[i][j]<<" ";
}
cout<<"\n";
}
}
Comments
Leave a comment