일차원 배열로 2차원 배열의 덧 빼 곱셈을 표현하는 소스거든
덧 뺄은 되는데
곱셈에서
3*3 행렬 끼리 곱하면
3*3 행렬이 나와야되잔아
근데 이부분이 해결이 안되네
한줄만나와
소스 보고 좀알려주면 안되 ? 제발..
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int x1,x2,y1,y2;
int *a,*b,*c,*d,*e,i,k,x,p,j,z,com=0;
e=0;
printf("a행열의 행을 입력하세요 :");
scanf("%d",&x1);
printf("a행열의 열을 입력하세요 :");
scanf("%d",&y1);
a = (int *)malloc(sizeof(int)*x1*y1);
printf("b행열의 행을 입력하세요 :");
scanf("%d",&x2);
printf("b행열의 열을 입력하세요 :");
scanf("%d",&y2);
b = (int *)malloc(sizeof(int)*x2*y2);
for(i=0;i<x1*y1;i++)
{ printf("a[%d]를 입력하세요:",i);
scanf("%d",&a[i]);
}
for(k=0;k<x2*y2;k++)
{
printf("b[%d]를 입력하세요:",k);
scanf("%d",&b[k]);
}
/* if(y1==x2)
{
e = (int *)malloc(sizeof(int)*x1*y2);
printf("a,b행렬의 곱셈결과:");
for(x=0;x<x1;((x)+(y1)))
{
for(j=0;j<y2;j++)
{
for(p=0;p<y1;p++)
com+=a[p+x]*b[p*y2+j];
e[x*y2+j]=com;
}
}
}
for(x=0;x<x1;((x)+(y1)))
{
for(j=0;j<y2;j++)
{
printf("%2d",e[x*y2+j]);
}
}
*/
if(x1==x2&&y1==y2)
{
c = (int *)malloc(sizeof(int)*x1*y1);
d = (int *)malloc(sizeof(int)*x1*y1);
for(x=0;x<x1*y1;x++)
{
c[x]=a[x]+b[x];
d[x]=a[x]-b[x];
}
printf("a,b행열의 덧셈결과:\n");
for(x=0;x<x1*y1;x++)
{
printf("%2d",c[x]);
if(((x+1)%y1)==0)
printf("\n");
}
printf("a,b행열의 뺄셈결과:\n");
for(x=0;x<x1*y1;x++)
{
printf("%2d",d[x]);
if(((x+1)%y1)==0)
printf("\n");
}
}
else
{
printf(" \n덧셈불가 \n");
printf(" \n뺄셈불가 \n");
}
if(y1==x2)
{
e = (int *)malloc(sizeof(int)*x1*y2);
printf("a,b행렬의 곱셈결과:");
for(x=0;x<x1;x+=y1)
{
for(j=0;j<y2;j++)
{ com=0;
for(p=0;p<y1;p++)
{
com+=a[p+x]*b[p*y2+j];
e[x*y2+j]=com;
}
}
}
}
for(x=0;x<x1;x+=y1)
{
for(j=0;j<y2;j++)
{
printf("%2d",e[x*y2+j]);
}
}
return 0;
}
씨발놈들아 내가걍했다 ㅋ 아 하는데 하루다잡아먹엇네 ㅋ