반응형

- 프로그램 명 : 두 정방행렬 입력받아 곱 구하는 프로그램(2,3정방행렬)
- 동작 방법 : 2*2배열이 사용시에도 3*3배열을 사용함으로써 배열 사용을 최적화하였다. 3*3결과입력 배열(res)에서는 더하기 연산을 함께사용하기 위하여 미리 선언 단계에서 모든 배열 요소를 0으로 초기화 하였다. 배열 입력 카운트 조건에서 입력 받은 차수 변수를 사용하여 2,3행렬 모두 한 부분에서 처리 될 수 있도록 최적화 하였다.

프로그램 명 : 두 정방행렬 입력받아 곱 구하는 프로그램(2,3정방행렬)
동작 방법 : 2*2배열이 사용시에도 3*3배열을 사용함으로써 배열 사용을 최적화하였다. 3*3결과입력 배열(res)에서는 더하기 연산을 함께 사용하기 위하여 미리 선언 단계에서 모든 배열 요소를 0으로 초기화 하였다배열 입력 카운트 조건에서 입력 받은 차수 변수를 사용하여 2,3행렬 모두 한 부분에서 처리 될 수 있도록 최적화 하였다.
전체 소스 코드

#include <stdio.h>
int main() {
	int in1[3][3],in2[3][3]; // 두 개의 입력 배열 선언
	int res[3][3]={0,}; // 결과 값 저장 배열 선언(모든 요소 0으로초기화)
	int a,b,c,n; 
	/* 차수 입력 */
	puts("차수를 입력하세요.(2또는 3)");
	scanf("%d", &n);
	/* 행렬 입력 */
	printf("첫 번째 정방행렬을 입력하세요.\n");
	for(a=0;a<n;a++){ // 첫 행렬 데이터 입력
		for(b=0;b<n;b++){
			scanf("%d",&in1[a][b]);
		}
	}
	printf("두 번째 정방행렬을 입력하세요.\n");
	for(a=0;a<n;a++){ // 두 번째 행렬 데이터 입력
		for(b=0;b<n;b++){
			scanf("%d",&in2[a][b]);
		}
	}
for(a=0;a<n;a++){ // 두 행렬 곱셈 계산 & 저장
		for(b=0;b<n;b++){
			for(c=0;c<n;c++){  
				res[a][b]+=in1[a][c]*in2[c][b];
			} // c를 교차하여 적음으로써 서로 엇갈리며
		} //         카운트 되어 곱셈하는 행렬 곱셈 성질
	} //                 을 알고리즘으로 구현 하였다.
	printf("\n"); // 개행
	printf("******* 결과 행렬 *******\n");
	for(a=0;a<n;a++){ // 결과 행렬 출력
		for(b=0;b<n;b++){
			printf("%5d",res[a][b]);
		}
		printf("\n"); // 결과 행렬의 행 구분
	}
	return 0;
}

- ex1) 2행 정방행렬 일때


- ex2) 3행 정방행렬 일때

P-컴프2배열레포트.hwp
0.03MB

 

반응형

+ Recent posts