Answer to Question #198812 in C++ for adil

Question #198812

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.


1
Expert's answer
2021-05-30T07:10:21-0400
#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";
	}
}




Need a fast expert's response?

Submit order

and get a quick answer at the best price

for any assignment or question with DETAILED EXPLANATIONS!

Comments

No comments. Be the first!

Leave a comment

LATEST TUTORIALS
New on Blog