작성일 : 13-07-15 23:15
이해가안되서 질문드립니다ㅠㅜ
 글쓴이 : 양창욱(ycw92325)
조회 : 4,565  
-코드

int arr[100];
int n;

void output(){
for ( int i = 1; i <= n ; i++ )
printf ( " %d ", arr[i]);
puts("");
}

void dice(int level){
if ( level > n ){ 
output( ); 
return;
}
for ( int  i = 1 ; i < 7 ; i++ ){
arr [ level ]  = i;
dice ( level+1 );
}
}

int main()
{
scanf ( "%d" , &n);
dice( 1 );
return 0;
}

이런코드인데요 
void dice(int level){
if ( level > n ){ 
output( ); 
return;
}
for ( int  i = 1 ; i < 7 ; i++ ){
arr [ level ]  = i;
dice ( level+1 );
}
}

이 dice 함수에서 level이라는 변수가 dice(1)로 인해서 1을 받았잖아요
그런대 
for ( int  i = 1 ; i < 7 ; i++ )
arr [ level ]  = i;
여기서 크기가 1에 불과한 arr이 어떻게 i 값 6개를 받을수가 있는거죠??
arr[100]에 들어간다는걸 감으로는 알겠는데
level은 1이잖아요..ㅜㅜ

부탁드려요! 자세한 설명부탁드릴게요!
감사합니다!

컴스쿨 13-07-16 15:17
 
arr은 전역변수로 선언되었고 그 크기는 100입니다.
level이 1이므로 arr[1]에 1~6사이의 수(첫번째 주사위의 값)을 저장하는 겁니다.
그리고 그 다음줄에서 dice(2)를 호출하여 두번째 주사위의 값을 arr[2]에 저장하는 거지요.
이러한 호출을 반복하여 n이상이 호출되면 n개의 주사위 값이 모두 저장되었으므로 출력을 하고 리턴하게 되는 겁니다.
     
양창욱 13-07-16 16:26
 
그런데 arr[1]에 6개의 수가 들어갈수기 있나요??
제말은 arr[6]이 되어야할거같은데..
컴스쿨 13-07-17 17:24
 
예를 들어 나이라는 변수가 있다고 합시다.
나이는 처음에는 1살이니까 1이라고 들어가겠지만 다음해에는 2로 바뀌겠지요.
그렇다고 나이라는 변수에 2개의 공간이 필요한건 아니지요.

arr[1]에는 1부터 6까지의 수가 차례대로 들어가는 것이지 그 6개가 한꺼번에 들어가는게 아닙니다.
즉 i가 1일때는 1이 들어가서 첫번째 주사위가 1인 경우의 모든 처리를 하게 됩니다.
그리고 i가 2가 되면 다시 arr[1]에 2가 들어가게 됩니다.
물론 이때는 이전에 들어갔던 1은 없어지게 되는 거지요.
첫번째 주사위가 1인 경우가 모두 끝나고 난 후에 2가 들어가는 거니까요.

다시한번 정의를 하자면 arr[1]은 첫번째 주사위를 던져서 나온 숫자를 저장하는 공간인데
이곳에는 1부터 6까지의 숫자중 한개가 저장이 되는 겁니다.
주사위를 한번 던져서 1부터 6까지가 모두 나올수는 없으니까요.
     
양창욱 13-07-17 19:24
 
아~~ 그렇구나ㅋㅋㅋ 좋은설명 감사합니다!!!
 
 

Total 644
번호 제   목 글쓴이 날짜 조회
164 초등부 예선 답안지 (1) 이신영 09-15 5456
163 결제오류건 (1) 김효중 09-11 4017
162 자기주도 C언어 책을 구매해 강의를 듣고 싶은데 번호가 누락… (1) 양성철 09-10 4207
161 자기주도 c언어 프로그래밍 2단원 형성평가문제 1번 답이 궁금 (1) 우강민 09-08 9240
160 기출문제 정답지 (1) 이신영 09-08 4616
159 일련번호 누락;; 재질문 (1) 신웅환 09-08 4129
158 이문제가 안풀려요..ㅠㅠ 간단하게라도 설명부탁드립니다. (2) 우근영 09-03 4038
157 일련번호 누락 (1) 신웅환 08-25 4084
156 자기주도 c 언어 결제요 (1) 양찬우 08-08 4355
155 2012년 전국 본선문제 관련 Q. (1) 이윤상 07-23 4400
154 이해가안되서 질문드립니다ㅠㅜ (4) 양창욱 07-15 4566
153 자기주도 c언어 일련번호&내용 관련 문의 입니다. (1) 안상재 07-14 4742
152 질문입니다.~ (1) 신철 07-04 4399
151 이것도 이해가 안됩니다.ㅠ.ㅠ (1) 신철 07-04 4400
150 안녕하세요~올림피아드 문제는 아니구요~ 풀다가 이해가 안되네… (1) 신철 07-04 4634
149 자가진단과 형성평가 소스는 없나요? (1) 박대성 06-25 5431
148 정보올림피아드 지역본선에서요~ (1) 최원미 06-20 4983
147 자기주도 C에서 4강이 안 열려요 (1) 박대성 06-16 4414
146 정보올림피아드 2012년 소스파일은 없나요? (1) 최원미 06-14 5545
145 자기주도 C에서 (1) 황준수 06-06 4352
 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30    

회사소개 | 개인정보처리방침 | 이용약관 | 찾아오시는 길 | 이메일주소 무단수집거부 | 사업자정보확인
경기도 안양시 동안구 호계동 1065-10 협성골드프라자 601호 한컴에듀케이션(주) TEL : 031-388-8840 FAX : 031-388-0996
대표자 : 김동규 사업자번호 : 130-86-02870 통신판매업신고번호 : 제 2010-경기안양-888호
COPYTIGHT(C) 한컴에듀케이션(주), ALL RIGHT RESERVED.
담은강좌 : 0