게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C 배열 이용한 배열 곱하기가 잘 안되네요..도와주세용..
게시물ID : programmer_7158짧은주소 복사하기
작성자 : 5초안에
추천 : 0
조회수 : 562회
댓글수 : 8개
등록시간 : 2014/12/16 02:49:44
옵션
  • 본인삭제금지
#include
int Input_matrix(int matrix[][5], int Input_n, int Input_m){
int n, m;
printf("\n");

for (n = 0; n < Input_n; n++){
printf("\n%d번째 행 입력하라!\n", n + 1);

for (m = 0; m < Input_m; m++){
printf("%d번째 : ", m + 1);
scanf_s("%d", &matrix[m][n]);
fflush(stdin);
}
}
return 0;
}
void Printf_matrix(int matrix[][5], int Input_n, int Input_m)
{
int  n, m;
printf("\n\n니가 입력한거야 \n");
for (n = 0; n < Input_n; n++){
for (m = 0; m < Input_m; m++){
printf("%d ", matrix[m][n]);
}
printf("\n");
}printf("\n\n");
}
int Calculate_multiplication(int multiplication[][5], int matrix[][5], int matrix2[][5], int Input_n, int Input_m, int Input2_m){//이 함수에서 문제가 있는거 같아요...
int k, n, m;

for (k = 0; k < Input_n; k++){
for (n = 0; n < Input2_m; n++){
int sum = 0;
for (m = 0; m < Input_m; m++){
sum += (matrix[k][m] * matrix2[m][n]);//problem cause 여기가 문제인듯...
}
multiplication[k][n] = sum;
//printf("%d ", multiplication[k][n]);
}
printf("\n");
}
return 0;
}
void Print_multiplication(int multiplication[][5], int Input_n, int Input2_m){
int i, j;

for (i = 0; i < Input_n; i++){
for (j = 0; j < Input2_m; j++) printf("%d ", multiplication[i][j]);
printf("\n");
}
}
main()
{
int matrix[5][5] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int matrix2[5][5] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int multiplication[5][5] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int Input_n, Input_m, Input2_n, Input2_m;

printf("우린 행렬 두개를 가지고 곱할거야 \n\n\n ");

printf("(5X5가 최대!  입력은 5,5로 해라) 첫번째 행렬 N X M ! 입력해라 : "); scanf_s("%d,%d", &Input_n, &Input_m); fflush(stdin);
Input_matrix(matrix, Input_n, Input_m); Printf_matrix(matrix, Input_n, Input_m);
Resume:

printf("(5X5가 최대!  입력은 5,5로 해라) 두번쨰 행렬 N X M ! 입력해라 : "); scanf_s("%d,%d", &Input2_n, &Input2_m);

if (Input_m != Input2_n){
printf("\n\n멍충아 A행렬의 열과 B행렬의 행이 같아야지 곱할수가 있잖녀~\n\n다시입력하자~! 참고! A행렬(%d X %d)\n\n", Input_n, Input_m);
goto Resume;
}
Input_matrix(matrix2, Input2_n, Input2_m); Printf_matrix(matrix2, Input2_n, Input2_m);

Calculate_multiplication(multiplication, matrix, matrix2, Input_n, Input_m, Input2_m);
 Print_multiplication(multiplication, Input_n, Input2_m);



}
1번행렬에 1,2,3
               1,2,3
2번행렬에 1,2
      1,2
      1,2

넣으면 정답은 6,12
                    6,12
가 나와야 하는데
값이    3,3
6,6

 

이 나오네요...
제 생각엔 문제가 없는데 계산하는곳에서 문제가 생긴거같아요
배열크기 지정하고 직접 숫자 입력해서 계산하면 잘 나오는데 입력받으면 거지같이 나오네요..
좀 도와주실수 있나요?
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호