Matrix multiplication
From Wikiversity
/* 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 */