#include <stdio.h>
#include <math.h>
int main(void)
{
float mat1[][3] = {{1,1,1},{1,1,2},{2,1,2}};
float mat2[][3] = {{1,1,1},{1,1,2},{2,1,2}};
float res[3][3] = {0, };
int i, j, k;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
{
for (k = 0; k < 3; k++)
res[i][j] += mat1[i][k]*mat2[k][j];
}
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
{
printf("res[%d][%d] = %f\n", i, j, res[i][j]);
printf("res[%d][%d] ^ %d = %f\n", i, j, 200, pow(res[i][j], 200));
}
return 0;
}
헉..소스에 문제가.. 초기화에 대한 고려를 전혀안했었네요..
float res[3][3] = {0, }; 를 해서 배열을 모두 0 로 초기하해야 합니다.
님의 소스는 초기화에 문제가 있습니다. Local 변수는 Garbage 값이 들어가므로
초기화가 필요합니다.
떡대 님이 쓰신 글 :
: #include <stdio.h>
: #include <math.h>
:
: int main(void)
: {
: float mat1[][3] = {{1,1,1},{1,1,2},{2,1,2}};
: float mat2[][3] = {{1,1,1},{1,1,2},{2,1,2}};
: float res[3][3];
: float p = 0;
: int i, j, k;
:
: for (i = 0; i < 3; i++)
: for (j = 0; j < 3; j++)
: {
: for (k = 0; k < 3; k++)
: p += mat1[i][k]*mat2[k][j];
:
: res[i][j] = p;
: }
:
:
: for (i = 0; i < 3; i++)
: for (j = 0; j < 3; j++)
: {
: printf("res[%d][%d] = %f\n", i, j, res[i][j]);
: printf("res[%d][%d] ^ %d = %f\n", i, j, 200, pow(res[i][j], 200));
: }
:
: return 0;
: }
:
: 전혀 해당 함수 인자를 맞추지 않아서 에러나는거에요...
: 그리고 Type을 Match 시켜주셔야 됩니당~
|