반응형
- 프로그램 명 : 두 정방행렬 입력받아 곱 구하는 프로그램(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
반응형