c·c++/c 프로그래밍

3x3 행렬의 곱셈

바로이순간 2013. 10. 2. 12:04

#include <stdio.h>

#define SIZE 3

void matMult(double a[][SIZE], double b[][SIZE], double c[][SIZE]) {

    int i, j, k;

    double x;


    for(i=0;i<SIZE;i+=1) {

        for(j=0;j<SIZE;j+=1) {

            x=0.;

            for(k=0;k<SIZE;k+=1) {

                x=x+a[i][k]*b[k][j];

            }

            c[i][j]=x;

        }

    }

}

int main() {

    int i, j;

    double x;

    double a[SIZE][SIZE], b[SIZE][SIZE], c[SIZE][SIZE];


    for(i=0;i<SIZE;i+=1) {

        for(j=0;j<SIZE;j+=1) {

            printf("행렬 1 [%d][ %d] 의 값: ", i, j);

            scanf("%lf", &x);

            a[i][j]=x;

         }

    }


    for(i=0;i<SIZE;i+=1) {

        for(j=0;j<SIZE;j+=1) {

            printf("행렬 2 [%d][ %d] 의 값: ", i, j);

            scanf("%lf", &x);

            b[i][j]=x;

         }

    }


    matMult(a, b, c);

    printf("\n행렬의 곱셈: \n");

    for(i=0;i<SIZE;i+=1) {

        for(j=0;j<SIZE;j+=1) {

            printf("%10.4f", c[i][j]);

        }

        printf("\n");

    }


    return 0;

}