|
TO
MULTIPLY TWO MATRICES |
|
Here is the
program to find the product of the two integer matrices. The
program asks for the order A (M, N) of the first matrix, and
that B (P, Q) of the second matrix. Soon after entering
the order, the cursor takes to the proper position in the
screen to input the matrices. User need to hit 'Enter' button
after each entry.
Logic : To multiply two matrices, the condition should
be satisfy that the column count of the first matrix A should equal the
column count of the second matrix B. (The program will check for the validity of
this condition i.e. if, N = P. If fails, outputs an error message.) The first
row of A is multiplied with with the first column of B. i.e. the first member of
the first row of A is multiplied with the first member of first column of B,
stored in a variable sum, second with the second and the product is added up,
similarly, the procedure grows till the end, and sum is updated in each
multiply, and the sum will be the first member of the product matrix C. The
procedure grows till the end. Finally we will get the product matrix C of order
(M, Q).
The procedure can be modified slightly with the same
algorithm, to add,
subtract,
transpose or others
like, to trace the
diagonals etc. |
|
|
|
#include<stdio.h>
void main()
{
int A[5][5],B[5][5],C[5][5],i,j,m,n,p,q,k;
clrscr();
printf("\n\n\t ENTER A ORDER OF THE FIRST MATRIX
M,N...: ");
scanf("%d,%d",&m,&n);
printf("\n\n\t ENTER A ORDER OF THE SECOND MATRIX
P,Q...: ");
scanf("%d,%d",&p,&q);
if(n == p)
{
printf("\n\n\t
ENTER THE ELEMENTS OF THE FIRST MATRIX..:\n\n");
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
gotoxy(25+j*4,14+i*2);
scanf("%d",&A[i][j]);
}
printf("\n");
}
printf("\n\t
ENTER THE ELEMENTS OF THE SECOND MATRIX..:\n\n");
for(i=1;i<=p;i++)
{
for(j=1;j<=q;j++)
{
gotoxy(25+j*4,20+m+i*2);
scanf("%d",&B[i][j]);
}
printf("\n");
}
for(i=1;i<=m;i++)
for(j=1;j<=q;j++)
{
C[i][j] = 0;
for(k=1;k<=n;k++)
C[i][j] = C[i][j] + (A[i][k] * B[k][j]);
}
printf("\n\t
THE PRODUCT OF TWO MATRICES IS...:\n\n\t\t\t ");
for(i=1;i<=m;i++)
{
for(j=1;j<=q;j++)
printf(" %d",C[i][j]);
printf("\n\n\t\t\t ");
}
}
else
{
printf("\n\t
THE ORDERS OF TWO MATRICES ARE NOT CORRECT");
printf("\n\n\t
HELP : 'N' SHOULD BE EQUAL TO 'P'");
}
getch();
}
Download exe and source code here.
Related source codes :
To find the sum of two
matrices
To find the difference of
two matrices
To find the sum of primary
diagonal of a matrix
To find the sum of
secondary diagonal of a matrix
To find the transpose of
a matrix
Select program from the list |
|
|
|
|