University School of Automation & Robotics

Personal resource archive for various courses.

e9.c

// Write a C program to multiply two matrices.

#include <stdio.h>

void inputMatrix(char name, int arr[][10], int rows, int columns) {
    printf("\n");
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < columns; j++) {
            printf("Enter %c_%d%d: ", name, i + 1, j + 1);
            scanf("%d", &(arr[i][j]));
        }
    }
}

void printMatrix(int arr[][10], int rows, int columns) {
    printf("\n");
    for (int i = 0; i < rows; i++) {
        printf("| ");
        for (int j = 0; j < columns; j++) {
            printf("%d ", arr[i][j]);
        }
        printf("|\n");
    }
}

int main() {
    int m, n, p, A[10][10], B[10][10], AB[10][10], sum;

    // Read number of rows and columns for first matrix
    printf("Enter number of rows for matrix A (<10): ");
    scanf("%d", &m);
    printf("Enter number of columns for matrix A (<10): ");
    scanf("%d", &n);
    printf("\n");

    // Read only the number of columns in the second matrix as the number of rows must be equal to the number of columns
    // in the first matrix
    printf("Enter number of columns for matrix B (<10): ");
    scanf("%d", &p);

    // Read values for both matrices
    inputMatrix('A', A, m, n);
    inputMatrix('B', B, n, p);

    // Calculate matrix multiplication [O(n^3)]
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < p; j++) {
            sum = 0;
            for (int k = 0; k < n; k++) {
                sum += A[i][k] * B[k][j];
            }
            AB[i][j] = sum;
        }
    }

    // Print matrix multiplication
    printf("\nThe matrix product AB =");
    printMatrix(AB, m, p);

    return 0;
}