Archive:Matrix multiplication using C: Difference between revisions
Appearance
wikademia>Stinky sock Removing all content from page |
wikademia>Wikademia |
||
| (8 intermediate revisions by 6 users not shown) | |||
| Line 1: | Line 1: | ||
<source lang="c">/* Program to implement matrix multiplication. */ | |||
/* Performed by Milan. */ | |||
/* Edited by Gergo: resolved some portability issues */ | |||
#include <stdio.h> | |||
#include <stdlib.h> | |||
int main(void) | |||
{ | |||
int a[10][10], b[10][10], c[10][10]; | |||
int i, j, m, n, x, y, k; | |||
/* Entering values for matrix a...*/ | |||
printf ("\n Enter the rows and columns of a: "); | |||
scanf ("%d%d", &m, &n); | |||
for (i = 0; i < m; i++) | |||
{ | |||
for (j = 0; j < n; j++) | |||
{ | |||
printf (" a[%d][%d] = ", (i+1), (j+1)); | |||
scanf ("%d", &a[i][j]); | |||
} | |||
printf ("\n"); | |||
} | |||
/* Entering values for matrix b... */ | |||
printf ("\n Enter the rows and columns of b: "); | |||
scanf ("%d%d", &x, &y); | |||
for (i = 0; i < x; i++) | |||
{ | |||
for (j = 0; j < y; j++) | |||
{ | |||
printf (" b[%d][%d] = ", (i+1), (j+1)); | |||
scanf ("%d", &b[i][j]); | |||
} | |||
printf ("\n"); | |||
} | |||
/* Calculations */ | |||
if ( n != x) | |||
{ | |||
printf ("\n Error!! Rows of a don't match with columns of b."); | |||
printf ("\n Multiplication Impossible."); | |||
exit(EXIT_FAILURE); | |||
} | |||
else | |||
{ | |||
for (i = 0; i < m; i++) | |||
{ | |||
for (j = 0; j < y; j++) | |||
{ | |||
c[i][j] = 0; | |||
for (k = 0; k < n; k++) | |||
{ | |||
c[i][j]+=a[i][k]*b[k][j]; | |||
} | |||
} | |||
} | |||
} | |||
/* Output */ | |||
printf ("\n The resultant c is:\n"); | |||
for (i = 0; i < m; i++) | |||
{ | |||
for (j = 0; j < y; j++) | |||
{ | |||
printf (" c[%d][%d] = %d", (i+1), (j+1), c[i][j]); | |||
} | |||
printf ("\n"); | |||
} | |||
return 0; | |||
} | |||
/* Output: | |||
Enter the rows and columns of a: 2 2 | |||
a[1][1] = 1 | |||
a[1][2] = 2 | |||
a[2][1] = 3 | |||
a[2][2] = 4 | |||
Enter the rows and columns of b: 2 2 | |||
b[1][1] = 2 | |||
b[1][2] = 1 | |||
b[2][1] = 2 | |||
b[2][2] = 2 | |||
The resultant c is: | |||
c[1][1] = 6 c[1][2] = 5 | |||
c[2][1] = 14 c[2][2] = 11 | |||
*/ | |||
</source> | |||
[[Category:C source code examples]] | |||
[[Category:Programming]] | |||
Latest revision as of 06:24, 13 June 2009
<source lang="c">/* Program to implement matrix multiplication. */ /* Performed by Milan. */ /* Edited by Gergo: resolved some portability issues */
- include <stdio.h>
- include <stdlib.h>
int main(void) {
int a[10][10], b[10][10], c[10][10];
int i, j, m, n, x, y, k;
/* Entering values for matrix a...*/
printf ("\n Enter the rows and columns of a: ");
scanf ("%d%d", &m, &n);
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
printf (" a[%d][%d] = ", (i+1), (j+1));
scanf ("%d", &a[i][j]);
}
printf ("\n");
}
/* Entering values for matrix b... */
printf ("\n Enter the rows and columns of b: ");
scanf ("%d%d", &x, &y);
for (i = 0; i < x; i++)
{
for (j = 0; j < y; j++)
{
printf (" b[%d][%d] = ", (i+1), (j+1));
scanf ("%d", &b[i][j]);
}
printf ("\n");
}
/* Calculations */
if ( n != x)
{
printf ("\n Error!! Rows of a don't match with columns of b.");
printf ("\n Multiplication Impossible.");
exit(EXIT_FAILURE);
}
else
{
for (i = 0; i < m; i++)
{
for (j = 0; j < y; j++)
{
c[i][j] = 0;
for (k = 0; k < n; k++)
{
c[i][j]+=a[i][k]*b[k][j];
}
}
}
}
/* Output */
printf ("\n The resultant c is:\n");
for (i = 0; i < m; i++)
{
for (j = 0; j < y; j++)
{
printf (" c[%d][%d] = %d", (i+1), (j+1), c[i][j]);
}
printf ("\n");
}
return 0;
} /* Output:
Enter the rows and columns of a: 2 2 a[1][1] = 1 a[1][2] = 2
a[2][1] = 3 a[2][2] = 4
Enter the rows and columns of b: 2 2 b[1][1] = 2 b[1][2] = 1
b[2][1] = 2 b[2][2] = 2
The resultant c is: c[1][1] = 6 c[1][2] = 5 c[2][1] = 14 c[2][2] = 11
- /
</source>