[c언어] 행렬 곱

2020. 12. 21. 16:39Computer Science/C

 

행렬 X(4 X 2) 와 Y(2 X 3)에 대해서 두 행렬의 곱 (Z에 넣어서)을 구하여 출력하는 프로그램을 작성한다.

 


#include <stdio.h>
void printMatrix(int a[][3], int size)
{
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%5d", a[i][j]);
        }
        printf("\n");
    }
}

void readMatrix(int a[][2], int size)
{
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < 2; j++) {
            scanf("%d", &a[i][j]);
        }
    }
}

void readMatrix2(int b[][3], int size)
{
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < 3; j++) {
            scanf("%d", &b[i][j]);
        }
    }
}

void matrixMultiplication(int a[][2], int b[][3], int c[][3], int size)
{
    int i, j, k;
    for (i = 0; i < size; i++)
        for (j = 0; j < 3; j++) {
            c[i][j] = 0;
            for (k = 0; k < 2; k++)
                c[i][j] += a[i][k] * b[k][j];
        }
}

int main(void)
{
    int X[4][2], Y[2][3], Z[4][3];
    printf("(4 x 2) 행렬 X 입력:\n");
    readMatrix(X, 4);
    printf("(2 x 3) 행렬 Y 입력:\n");
    readMatrix2(Y, 2);

    matrixMultiplication(X, Y, Z, 4);
    printf("행렬 곱:\n"); printMatrix(Z, 4);
    printf("\n");
}

 

결과