배열이름을 인자값으로 가지는 함수의 배열계산.
꽃가람
배열이름을 인자값으로 가지는 함수.. 배열이름을 인자값으로 가지는 함수의 배열계산.
질문 내용 : 유향그래프의 연결선 행렬로 진입차수와 진출차수 구하는 프로그램을 짜는데,배열을 하나 선언해서 배열 이름을 함수로 넘겨줬는데, 그 함수 내에서는 배열 값이 다르게 나타납니다..왜 그런지 좀 도와주세요ㅠㅠ
#include stdio.h
#define vertex 6
#define edge 8void indeg(int matrix[][2]);
void outdeg(int matrix[][2]);
int main()
{
int a[8][2] = {{1,4}, {2,2}, {6,5}, {1,5}, {3,2}, {4,1}, {4,3}, {4,6}};
int b[8][2] = {{1,4}, {5,4}, {4,2}, {6,1}, {2,5}, {3,5}, {2,6}, {4,3}};
int c[8][2] = {{1,6}, {5,6}, {2,3}, {4,1}, {5,2}, {3,5}, {1,5}, {6,3}};
//이 부분에서 배열 출력시 올바른 값이 나옴.
printf(--------a의 진입차수--------\n);
indeg(a);
printf(--------a의 진출차수--------\n);
outdeg(b);
}void indeg(int matrix[][2])
{
int i, j, k;
int c[vertex][2] = {{1,0}, {2,0}, {3,0}, {4,0}, {5,0}, {6,0}};
for(i=0 ; iedge ; i++)
{
for(j=0 ; jvertex ; j++)
{
if(c[j][0] == matrix[i][1])
{
c[j][1]++;
}
}
}
for(k=0 ; kvertex ; k++)
printf(v%d의 진입차수 : %d \n, c[k][0], c[k][1]);
}
void outdeg(int matrix[][2])
{
int i, j, k;
int c[vertex][2] = {{1,0}, {2,0}, {3,0}, {4,0}, {5,0}, {6,0}};//이 이후에 넘겨받은 배열을 printf 하면 전혀 다른 값이 나옴.
for(i=0 ; iedge ; i++)
{
for(j=0 ; jvertex ; j++)
{
if(c[j][0] == matrix[i][0])
{
c[j][1]++;
}
printf(%d, %d, %d \n, c[j][0], c[j][1], matrix[i][0]);
}
}
for(k=0 ; kvertex ; k++)
printf(v%d의 진출차수 : %d \n, c[k][0], c[k][1]);
}