The ordinary matrix multiplication is the most often used and the most important way to multiply matrices. It is defined between two matrices only if the width of the first matrix equals the height of the second matrix. Multiplying an m×n matrix with an n×p matrix results in an m×p matrix.
The C program below show the matrix multiplication. The exe file can be downloaded from here : Matrix Multiplication
# include "stdio.h"
main()
{
int m1[10][10],i,j,k,m2[10][10],mult[10][10],r1,c1,r2,c2;
printf("Enter number of rows and columns of first matrix (less than 10)\n");
scanf("%d%d",&r1,&c1);
printf("Enter number of rows and columns of second matrix (less than 10)\n");
scanf("%d%d",&r2,&c2);
if(r2==c1)
{
printf("Enter rows and columns of First matrix \n");
printf("Row wise\n");
for(i=0;i<r1;i++)
for(j=0;j<c1;j++)
scanf("%d",&m1[i][j]);
printf("First Matrix is :\n");
for(i=0;i<r1;i++)
{
for(j=0;j<c1;j++)
printf("%d\t",m1[i][j]);
printf("\n");
}
printf("Enter rows and columns of Second matrix \n");
printf("Row wise\n");
for(i=0;i<r2;i++)
for(j=0;j<c2;j++)
scanf("%d",&m2[i][j]);
printf("Second Matrix is:\n");
for(i=0;i<r2;i++)
{
for(j=0;j<c2;j++)
printf("%d\t",m2[i][j]);
printf("\n");
}
printf("Multiplication of the Matrices:\n");
for(i=0;i<r1;i++)
{
for(j=0;j<c2;j++)
{
mult[i][j]=0;
for(k=0;k<r1;k++)
mult[i][j]+=m1[i][k]*m2[k][j];
printf("%d\t",mult[i][j]);
}
printf("\n");
}
}
else
{
printf("Matrix multiplication cannot be done");
}
return 0;
}


Posted in 

Do you mind if I use the information I got reading from this website on the project that I’m working? I will properly cite you.
Thanks to provide the solution……of multiplication of array…
Thanks you! This was useful for me! It’s clear and easy to understand
your code for mat multi was useful…thanks’
Really very helpful………………
thanks a lot!!!
tanq
thanx…..really useful for quick revision.
Thanks for the code……
Thanksssss da its very easy to understand
…
for(k=0;k<r1;k++)
mult[i][j]+=m1[i][k]*m2[k][j];
…
Not good.
It should be:
for(k=0;k<c1;k++)
mult[i][j]+=m1[i][k]*m2[k][j];
Miki is right. The counter of third loop in multiplication must be less then column1 not row1.
for(k=0;k<c1;k++) /* corrected code */
thanks
Miki is corcrect . k should have the counter of c1=r2, not R1.
Thanks for providing this code.It works really well.
nice code dude
will anybody suggest me good books for matlab in image processing.
correction:
in the for command line
for(k=0;k<r1;k++);
the condition given is wrong…
it should be either k<r2 or k<c1
plzz correct it..
Good one firoz.. I got stuck with the code and took some time to correct it