Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[5673] Re:질문 한가지만 더 할게요...막히는 부분이...ㅠ.ㅠ
외랑 [] 1739 읽음    2006-04-06 17:49
지나가다 다시 수정해서 실행시켜 보았습니다만 안지훈님 말씀대로의 결과는 안나오는 걸요... 총카운트는 64가 아니라 45(46-1)회입니다..(여기서 카운트는 진짜 루프가 진행된 회수만 세어볼 때 입니다. 카운트는 1부터 세어야 겠지요.)
확인을 위해 이렇게 고쳐보았습니다.

    int i , j , tcnt=1;
    for( i=1;  i<=10 ; i++)
    {
        printf("I loop : %3d\n", i);
        int cnt=1;
         for( j=i ;  j<=10 ;  j++)
         {
             printf("   J loop : i:%3d j:%3d i+j:%3d cnt:%3d Total:%3d\n", i, j, i+j, cnt, tcnt);
             tcnt++; cnt++;
             if( i+j == 12) break;
         }
    }
    printf("Total Count => %3d\n", tcnt);

문제는 break문에 해당되는 경우가 초반과 중반, 후반이 다르다는 거지요.. 왜냐구요.. i+j가 12가 나올 때만 j의 for문을 중단하고 나오니까요..결과파일도 덤으로 올려놓습니다..ㅎㅎ
루프별로 시작과 끝만 남기고 보면 아래와 같습니다.
카운트가 순서대로 10->9->7->5->3->1->4->3->2->1 번이죠..
제일 마지막의 TotalCount 는 46이지만 한번을 빼야합니다. 마지막 루프에서 나가면서 1이 증가 되니까요..
이건 카운트하면 안되겠죠..

I loop :   1
   J loop : i:  1 j:  1 i+j:  2 cnt:  1 Total:  1
   J loop : i:  1 j: 10 i+j: 11 cnt: 10 Total: 10
I loop :   2
   J loop : i:  2 j:  2 i+j:  4 cnt:  1 Total: 11
   J loop : i:  2 j: 10 i+j: 12 cnt:  9 Total: 19
I loop :   3
   J loop : i:  3 j:  3 i+j:  6 cnt:  1 Total: 20
   J loop : i:  3 j:  9 i+j: 12 cnt:  7 Total: 26
I loop :   4
   J loop : i:  4 j:  4 i+j:  8 cnt:  1 Total: 27
   J loop : i:  4 j:  8 i+j: 12 cnt:  5 Total: 31
I loop :   5
   J loop : i:  5 j:  5 i+j: 10 cnt:  1 Total: 32
   J loop : i:  5 j:  7 i+j: 12 cnt:  3 Total: 34
I loop :   6
   J loop : i:  6 j:  6 i+j: 12 cnt:  1 Total: 35
I loop :   7
   J loop : i:  7 j:  7 i+j: 14 cnt:  1 Total: 36
   J loop : i:  7 j: 10 i+j: 17 cnt:  4 Total: 39
I loop :   8
   J loop : i:  8 j:  8 i+j: 16 cnt:  1 Total: 40
   J loop : i:  8 j: 10 i+j: 18 cnt:  3 Total: 42
I loop :   9
   J loop : i:  9 j:  9 i+j: 18 cnt:  1 Total: 43
   J loop : i:  9 j: 10 i+j: 19 cnt:  2 Total: 44
I loop :  10
   J loop : i: 10 j: 10 i+j: 20 cnt:  1 Total: 45
Total Count =>  46





안지훈 님이 쓰신 글 :
: 독학으로 공부하면서 나름대로 이해하려고 용쓰는데 어려움은 좀있네요...지금 반복문쪽(break문으로 반복문빠져나가기...)을 공부중인데....중간에 이해가 안돼는부분이있네요....책중간에 예제코드 같은걸로
:
: int i , j , cnt=0 ;
:
: for( i=1;  i<=10 ; i++){
:
:         for( j=i ;  j<=10 ;  j++){
:             cnt++;
:             if( i+j ==12) break;
:         }
: }
:
: printf("count => %d\n", cnt);
:
: 이겨서 퀴즈로 이중for문에서 출력되는 cnt의 값을 계산해보라는문제인데요....중복된 for문에서 break는 가까운 for문을 빠져나간다고 되있는데....그럼 두번째 for문을 빠져나가서 다시 처음의 for문을 반복하면 다시 두번째 for문을 다시사용하나요??아님 한번빠져나간 for문은 그담부턴 사용안하는건가요??그게 궁금하고요....
: 답은 64로 되있는데 어째서 그렇게 되는지 이해가 안돼네요...연습문제도 아니라 설명도 안나와있어요...ㅠ.ㅠ 잘아시는분 조언좀 구할게요...절대 학교 과제 그런거 아닙니다....;;;;;꼭 부탁드립니다...

+ -

관련 글 리스트
5662 질문 한가지만 더 할게요...막히는 부분이...ㅠ.ㅠ 안지훈 1780 2006/03/29
5673     Re:질문 한가지만 더 할게요...막히는 부분이...ㅠ.ㅠ 외랑 1739 2006/04/06
5668     Re:질문 한가지만 더 할게요...막히는 부분이...ㅠ.ㅠ 외랑 1754 2006/03/31
5664     Re:질문 한가지만 더 할게요...막히는 부분이...ㅠ.ㅠ zepirox 1815 2006/03/29
5667         Re:Re:질문 한가지만 더 할게요...막히는 부분이...ㅠ.ㅠ 안지훈 1785 2006/03/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.