프로그래밍

 3198, 1/160 회원가입  로그인  
   dye456
   배열 질문있어서 하나만 여쭈어 보와용 ^^

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=6301 [복사]


책에 있는거 조금 바꿔서 vi로 돌려본 내용인데요

#define num 4   //                 first  mid   final  sum  
#define first 0    //                 1      2       3
#define mid 1    //     num      4      5       6                <-- 이런 모양으로 생각하시면 되요..
#define final 2   //                 10    20     30                     배열을 이용한 간단한 출력함수임
#define sum 3   //                 11    22     33

void calcgrade(int g[][4]);  
void printgrade(int g[][4]);

int main(void)
{
int grade[][4] = {{1,2,3}, {4,5,6}, {10,20,30}, {11,22,33}};

calcgrade(grade);  //내용 처리
printgrade(grade); // 내용 출력

return 0;
}

void calcgrade(int g[][4])
{
int i,j;

for(i=0;i<num;i++)
{
    for(j=0;j<sum;j++)
       {
          g[i][sum] = g[i][sum] + g[i][j];
        }
     g[num][first] = g[num][first] + g[i][first];
     g[num][mid] = g[num][mid] + g[i][mid];
     g[num][final] = g[num][final] + g[i][final];
}
}

void printgrade(int g[][4])
{
생략
}

여기서 문제가 void clacgrade(int g[][4]) 함수 안에 g[num][first] = g[num][first] + g[i][first] 내용이 문제를 일으켜요.
그래서 알아보니 g[num][first] 값이 '0'이 나와야 하는데 쓰레기 값 나오더군요..(나머지는 전부 잘 실행됨)
                      ( g[4][0] )

왜 그런건지 아시나요??
first를 없에고 mid, final, sum만 사용하는 g[][3]으로 했을때는 잘 출력이 되구요..

  Hit : 4556     Date : 2013/01/22 07:29



    
letmeln int grade[][4] = {{1,2,3}, {4,5,6}, {10,20,30}, {11,22,33}};
이렇게 정의하시고
g[4][0] 이렇게 참조하시면
g[0] = {1,2,3}
g[1] = {4,5,6}
g[2] = {10,20,30}
g[3] = {11,22,33}
g[4] = ??
요렇게 되서 그렇습니다~
2013/02/22