140
2020-05-22 15:00:18
0
103

C언어 2차원 배열 곱셈



#include <stdio.h>

#define MAX_LENGTH 201
int i, j, k;

void multiply(int ra, int ca, int ma[][MAX_LENGTH], int rb, int cb, int mb[][MAX_LENGTH], int mx[][MAX_LENGTH])
{
	for (i = 0; i < ra; i++) {
		for (j = 0; j < cb; j++) {
			for (k = 0; k < ca; k++) {
				mx[i][j] = ma[i][k] * mb[k][j];
			}
		}
	}

}

int main() {

	int ra = 0, ca = 0, rb = 0, cb = 0, rc = 0, cc = 0, rx = 0, cx = 0;
	int ma[MAX_LENGTH][MAX_LENGTH] = { 0, };
	int mb[MAX_LENGTH][MAX_LENGTH] = { 0, };
	int mx[MAX_LENGTH][MAX_LENGTH] = { 0, };
	int mc[MAX_LENGTH][MAX_LENGTH] = { 0, };


	scanf("%d %d", &ra, &ca);
	for (int i = 0; i < ra; i++) {
		for (int j = 0; j < ca; j++) {
			scanf("%d", &ma[i][j]);
		}
	}

	scanf("%d %d", &rb, &cb);
	for (int i = 0; i < rb; i++) {
		for (int j = 0; j < cb; j++) {
			scanf("%d", &mb[i][j]);
		}
	}
	
	scanf("%d %d", &rc, &cc);
	for (int i = 0; i < rc; i++) {
	   for (int j = 0; j < cc; j++) {
		  scanf("%d", &mc[i][j]);
	   }
	}

	multiply(ra, ca, ma, rb, cb, mb, mx);

	for (i = 0; i < rc; i++) {
		for (j = 0; j < cx; j++) {
			for (k = 0; k < ca; k++) {
				ca = rb;
				mx[i][j] += ma[i][k] * mb[k][j];
			}
		}
	}
}

제가 궁금한 것은요! 저 위에  multiply함수를 통해 MA행렬과 MB행렬을 곱해서 MX에 저장한거고 여기서 또 다른 행렬 MC의 값을 입력받아 MX와 곱하고 그에 따른 값을 출력하려고 하는데요 for문을 쓸 때 MX행렬의 행과 열을 뭐라고 나타내야 할지 모르겠어요 도와주세요!

(아직 많이 부족한지라 코드가 이상해도 양해 부탁드립니다 ㅠㅠ)

0
0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.