-
Notifications
You must be signed in to change notification settings - Fork 1k
/
Copy pathmatrix_multiplication.c
78 lines (70 loc) · 2.07 KB
/
matrix_multiplication.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// C program to implement Matrix Multiplication
#include <stdio.h>
void matrix_mult(int [][10],int [][10],int [][10],int,int,int,int);
int main()
{
int r1, c1, r2, c2;
printf("Enter the number of rows and columns of the first matrix: ");
scanf("%d %d", &r1, &c1);
printf("Enter the number of rows and columns of the second matrix: ");
scanf("%d %d", &r2, &c2);
//If the number of columns of the second matrix and the number of rows of first matrix differ, they cannot be added
if (c1 != r2)
{
printf("Given Matrices cannot be multiplyable!!!");
return 0;
}
int A[10][10], B[10][10], C[10][10];
// Input the values of the matrices
printf("Enter the values of the first matrix\n");
for (int i = 0; i < r1; i++)
{
for (int j = 0; j < c1; j++)
scanf("%d", &A[i][j]);
}
printf("Enter the values of the second matrix\n");
for (int i = 0; i < r2; i++)
{
for (int j = 0; j < c2; j++)
scanf("%d", &B[i][j]);
}
matrix_mult(C,A,B,r1,r2,c1,c2);
printf("The resultant matrix is:\n");
for (int i = 0; i < r2; i++)
{
for (int j = 0; j < c2; j++)
printf("%d ", C[i][j]);
printf("\n");
}
return 0;
}
void matrix_mult(int C[][10],int A[][10],int B[][10],int r1,int r2,int c1,int c2)
{
// Multiply both the matrices
for (int i = 0; i < r1; i++)
{
for (int j = 0; j < c2; j++)
{
C[i][j] = 0;
for (int k = 0; k < c1; k++)
C[i][j] += A[i][k] * B[k][j];
}
}
}
/*
Time Complexity: O(r1 * c2 * c1), where 'r1' is the number of rows of first matrix and 'c2' is the number of columns
of second matrix and 'c1' is the number of columns of first matrix
Space Complexity: O(r1 * c2)
SAMPLE INPUT AND OUTPUT
Enter the number of rows and columns of the first matrix: 2 2
Enter the number of rows and columns of the second matrix: 2 2
Enter the values of the first matrix
1 1
1 1
Enter the values of the second matrix
1 1
1 1
The resultant matrix is:
2 2
2 2
*/