행렬프로그램 질문입니다
황소눈
#include stdio.h
#define max 2
main()
{
int a[max][max];
int b[max][max];
int c[max][max];
int i,j,k,det,inverse,select;
printf(1. 2 * 2 행렬\n2. 3 * 3 행렬\n3. 4 * 4 행렬\n);
printf(행렬을 선택하시오 : );
scanf(%d,&select);
switch(select)
{
case 1 :
for(i=0; i2; i++)
{
for(j=0; j2; j++)
{
printf(첫번째 행렬의 원소를 입력하시오 : );
scanf(%d,&a[max][max]);
}
}
det = a[0][0] * a[1][1] - a[0][1] * a[1][0];
for(i=0; i2; i++)
{
for(j=0; j2; j++)
{
printf(두번째 행렬의 원소를 입력하시오 : );
scanf(%d,&b[max][max]);
}
}
for(i=0; i2; i++)
{
for(j=0; j2; j++)
{
c[i][j]=0;
for(k=0; k2; k++)
{
c[i][j] += a[i][k] * b[k][j];
}
}
}
printf(2 * 2 행렬의 행렬식\n);
printf(%d\n\n,det);
printf(2 * 2 행렬의 역행렬\n);
printf(%d\n\n,inverse);
printf(2 * 2 행렬의 곱행렬\n);
for(i=0; i2; i++)
for(j=0; j2; j++)
printf(%d %d\n,c[i][j]);
printf(\n);
}
}
일단 미완성인데 막히는 부분때문에 질문드려봅니다
1. 곱행렬 구하는 구성은 맞는 것 같은데 출력이 2x2 행렬로 뜨지 않고 값도 이상하게 나오는데 이유가 무엇이고
이를 수정하기 위해서는 어떻게 해야 하나요?
2. 역행렬을구할려고 하는데 ( 1 / det ) * ( )
( )에 대한 행렬의 구성은 그냥 쓰는걸로는 하겠는데 코딩을 어떻게 해야 할지 막막하네요
inverse[0][0] = mat2x2[1][1] / det;
inverse[0][1] = -mat2x2[0][1] / det;
inverse[1][0] = -mat2x2[1][0] / det;
inverse[1][1] = mat2x2[0][0] / det;
지식인에서의 소스는 이렇게 되어 있는 것을 보았는데 for문으로 할려고 합니다만 잘 안되서
질문드려 봅니다