[IT]/C++

배열을 이용한 행렬곱

givemebro 2020. 3. 12. 10:01
반응형
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void insert(int mat1[4][3], int mat2[3][2]) {
	for (int i = 0; i < 4; i++) {
		for (int j = 0; j < 3; j++) {
			mat1[i][j] = i * 3 + j;
			if (i < 3 && j < 2) {
				scanf("%d", &mat2[i][j]);
			}
		}
	}
	for (int i = 0; i < 4; i++) {
		for (int j = 0; j < 3; j++) {
			printf("  %3d", mat1[i][j]);
		}
		puts("");
	}
	puts("");
	puts("");

	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 2; j++) {
			printf("  %3d", mat2[i][j]);
		}
		puts("");
	}
	puts("");
	puts("");

}
void mul(int mat1[4][3], int mat2[3][2], int result[4][2]) {
	for (int i = 0; i < 4; i++) {
		for (int j = 0; j < 2; j++) {
			for (int k = 0; k < 3; k++) {
				result[i][j] += mat1[i][k] * mat2[k][j];
			}
		}
	}
}
void printresult(int result[4][2]) {
	for (int i = 0; i < 4; i++) {
		for (int j = 0; j < 2; j++) {
			printf("  %3d ", result[i][j]);
		}
		puts("");
	}
}
int main() {
	int mat1[4][3], mat2[3][2], result[4][2] = { {0,0}, };
	memset(result, 0, sizeof(int));
	insert(mat1, mat2);
	mul(mat1, mat2, result);
	printresult(result);
	return 0;
}
/*
1
0
0
0
1
1
*/

반응형