C# program to multiply two matrices has been shown here. Matrix $[A]_{m \times n}$ can be multiplied with matrix $[B]_{p \times q}$, iff $n = p$ i.e. the number of columns of the first matrix should to be equal to the number of rows in the second matrix. The order of the resultant matrix $C$ would be $m \times q$.
Algorithm, pseudocode and time complexity of the program have also been shown below.
1. Algorithm for matrix multiplication
1. Take two matrice $A_{m\times n}$ and $B_{p\times q}$ as input.
2. Declare another matrix $C_{m\times q}$ and initailize it with 0.
3. Check if $n = p$
4. If step [3] is false then display "Matrices can not be multiplied!" and go to step [8]
5. If step [3] is true, then
6. Repeat for each $i \in [0, m - 1]$
6.1. Repeat for each $j \in [0, q - 1]$
6.1.1. Repeat for each $k \in [0, p - 1]$
6.1.1.1. Perform $C[i][j] = C[i][j] + A[i][k] * B[k][j]$
7. Display $C_{m\times q}$ as the resultant matrix.
8. Exit program.
2. Pseudocode for matrix multiplication
Input: Two matrices $A_{m\times n}$ and $B_{p\times q}$
Output: $A * B$
1. Procedure matrixMultiplication($A_{m\times n}$, $B_{p\times q}$):
2.
3.
4.
5.
6.
7.
8.
9.
10.
11. End Procedure
3. Time Complexity for matrix multiplication
Time Complexity: O($n^3$)
Where $n$ is the row and column size of two matrices.
4. C# Program for matrix multiplication
/****************************************** alphabetacoder.com C# Program for Matrix Multiplication *******************************************/ using System; namespace MatrixMultiplication { class Program { static void Main() { // Declare variables int m, n, p, q, i, j, k; int[, ] A = new int[10, 10]; int[, ] B = new int[10, 10]; int[, ] C = new int[10, 10]; // Take input of the order of the first matrix Console.Write("Enter the number of rows of the first matrix: "); m = Convert.ToInt32(Console.ReadLine()); Console.Write("Enter the number of columns of the first matrix: "); n = Convert.ToInt32(Console.ReadLine()); // Take input of the first matrix Console.WriteLine("Enter the first matrix of order " + m + " x " + n + " ="); for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { Console.Write("Enter the element at row " + (i + 1) + " column " + (j + 1) + ": "); A[i, j] = Convert.ToInt32(Console.ReadLine()); } } // Take input of the order of the second matrix Console.Write("Enter the number of rows of the second matrix: "); p = Convert.ToInt32(Console.ReadLine()); Console.Write("Enter the number of columns of the second matrix: "); q = Convert.ToInt32(Console.ReadLine()); // Take input of the second matrix Console.WriteLine("Enter the second matrix of order " + p + " x " + q + " ="); for (i = 0; i < p; i++) { for (j = 0; j < q; j++) { Console.Write("Enter the element at row " + (i + 1) + " column " + (j + 1) + ": "); B[i, j] = Convert.ToInt32(Console.ReadLine()); } } // Check if the number of columns in the first matrix // is the same as the number of rows in the second matrix. // If not, then matrices cannot be multiplied if (n != p) { Console.WriteLine("\nMatrices cannot be multiplied!"); } else { // Perform matrix multiplication for (i = 0; i < m; i++) { for (j = 0; j < q; j++) { for (k = 0; k < p; k++) { C[i, j] += A[i, k] * B[k, j]; } } } Console.WriteLine("The resultant matrix after multiplication:"); // Display the result for (i = 0; i < m; i++) { for (j = 0; j < q; j++) { Console.Write(C[i, j] + " "); } // New line Console.WriteLine(); } } } } }
Output
Enter the number of rows of the first matrix: 2
Enter the number of columns of the first matrix: 2
Enter the first matrix of order 2 x 2 =
Enter the element at row 1 column 1: 1
Enter the element at row 1 column 2: 2
Enter the element at row 2 column 1: 5
Enter the element at row 2 column 2: 3
Enter the number of rows of the second matrix: 2
Enter the number of columns of the second matrix: 3
Enter the second matrix of order 2 x 3 =
Enter the element at row 1 column 1: 1
Enter the element at row 1 column 2: 0
Enter the element at row 1 column 3: 3
Enter the element at row 2 column 1: 2
Enter the element at row 2 column 2: 5
Enter the element at row 2 column 3: 3
The resultant matrix after multiplication:
5 10 9
11 15 24