#include <stdio.h>
#define ROWS 3
#define COLS 3
void matrixMultiply(int *mat1, int *mat2, int *result, int rows1, int cols1, int cols2) {
int i, j, k;
// Multiplying matrices
for (i = 0; i < rows1; i++) {
for (j = 0; j < cols2; j++) {
*(result + i * cols2 + j) = 0;
for (k = 0; k < cols1; k++) {
*(result + i * cols2 + j) += *(mat1 + i * cols1 + k) * *(mat2 + k * cols2 + j);
}
}
}
}
void displayMatrix(int *mat, int rows, int cols) {
int i, j;
// Displaying matrix
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
printf("%d\t", *(mat + i * cols + j));
}
printf("\n");
}
}
int main() {
int mat1[ROWS][COLS] = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
int mat2[ROWS][COLS] = {{9, 8, 7},
{6, 5, 4},
{3, 2, 1}};
int result[ROWS][COLS];
// Multiplying matrices
matrixMultiply((int *)mat1, (int *)mat2, (int *)result, ROWS, COLS, COLS);
// Displaying matrices
printf("Matrix 1:\n");
displayMatrix((int *)mat1, ROWS, COLS);
printf("\nMatrix 2:\n");
displayMatrix((int *)mat2, ROWS, COLS);
printf("\nResultant Matrix:\n");
displayMatrix((int *)result, ROWS, COLS);
return 0;
}
Matrix Multiplication Function (
matrixMultiply
): This function takes pointers to the two matrices (mat1
andmat2
) to be multiplied and a pointer to the result matrix (result
). Additionally, it takes the dimensions of the matrices (rows1
,cols1
, andcols2
). Inside the function, the matrices are accessed using pointer arithmetic, and matrix multiplication is performed similarly to the previous example.Display Matrix Function (
displayMatrix
): This function takes a pointer to a matrix (mat
), along with its dimensions (rows
andcols
). It uses pointer arithmetic to access the elements of the matrix and prints them row by row.Main Function (
main
): In themain
function, two matrices (mat1
andmat2
) are initialized with sample values. Then, thematrixMultiply
function is called to compute the product of these matrices, and the result is stored in theresult
matrix. Finally, the contents of all three matrices are displayed using thedisplayMatrix
function.
This code demonstrates how to multiply two matrices in C using functions and pointers for passing matrices to functions.
Comments
Post a Comment