#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
이 나오네요...제 생각엔 문제가 없는데 계산하는곳에서 문제가 생긴거같아요
배열크기 지정하고 직접 숫자 입력해서 계산하면 잘 나오는데 입력받으면 거지같이 나오네요..
좀 도와주실수 있나요?