책 내용 질문하기
질문
도서
2017 시나공 정보처리기사 실기(산업기사 포함) 특별개정판
페이지
267
조회수
112
작성일
2017-05-31
작성자
탈퇴*원
첨부파일

266순서도에

J<10-i

i<9면

옆에 c언어코드는

J<9-i

i<8

아닌가요 왜 8-i인가요

답변
2017-06-01 09:41:59

안녕하세요.

C언어는 배열의 위치가 0부터 시작합니다.

i가 0일 때, 즉 1회전에서는

j는 0부터 8-i, 즉 8까지 비교합니다.

다시말해

j가 0일 때는

data[0]일 때 data[1]과

j가 1일 때는

data[1]일 때 data[2]와

.

.

j가 7일 때는

data[7]일 때 data[8]과

j가 8일 때는

data[8]일 때 data[9]와 비교합니다.

data 배열은 data[0]부터 data[9]까지 10개이므로 8-i까지 비교하면 각 회전때마다 맞게 비교됩니다.

하나만 더 살펴볼까요.

i가 1일 때, 즉 2회전에서는

j는 0부터 8-i, 즉 7까지 비교합니다. 마지막 data[9]에는 1차 정렬된 값이 저장되므로 2회전에서는 data[8]까지만 비교하면 됩니다.

그래서

j가 0일 때

data[0]과 data[1]을

j가 7일 때

data[7]과 data[8]을 비교하게 됩니다.

그리고 i는 회전수를 의미합니다. 회전은 데이터가 총 10개라면 9번만 하면 됩니다.

i도 0부터 시작이므로

i는 0일 때 1회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.

i는 1일 때 2회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.

i는 2일 때 3회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.

i는 3일 때 4회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.

.

.

i는 6일 때 7회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.

i는 7일 때 8회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.

i는 8일 때 9회전을 하고 비교합니다. i < 8인지 No이므로 수행을 중지합니다.

결국 i < 8일 때까지 수행하면 9회전을 하게 됩니다.

C언어는 배열의 위치가 0부터 시작하기 때문에 이런 차이가 발생함을 염두에 두고 학습하세요.

종료 기준값을 확인할 때는 반드시 디버깅을 직접 수행한 후 판단을 해야 합니다.

디버깅 없이 눈으로만 확인할 경우 맞는 것 같아 실수하는 경우과 많기 때문입니다. 이점 학습에 꼭 참고하세요.

오늘도 즐거운 하루 되세요.

  • *
    2017-06-01 09:41:59

    안녕하세요.

    C언어는 배열의 위치가 0부터 시작합니다.

    i가 0일 때, 즉 1회전에서는

    j는 0부터 8-i, 즉 8까지 비교합니다.

    다시말해

    j가 0일 때는

    data[0]일 때 data[1]과

    j가 1일 때는

    data[1]일 때 data[2]와

    .

    .

    j가 7일 때는

    data[7]일 때 data[8]과

    j가 8일 때는

    data[8]일 때 data[9]와 비교합니다.

    data 배열은 data[0]부터 data[9]까지 10개이므로 8-i까지 비교하면 각 회전때마다 맞게 비교됩니다.

    하나만 더 살펴볼까요.

    i가 1일 때, 즉 2회전에서는

    j는 0부터 8-i, 즉 7까지 비교합니다. 마지막 data[9]에는 1차 정렬된 값이 저장되므로 2회전에서는 data[8]까지만 비교하면 됩니다.

    그래서

    j가 0일 때

    data[0]과 data[1]을

    j가 7일 때

    data[7]과 data[8]을 비교하게 됩니다.

    그리고 i는 회전수를 의미합니다. 회전은 데이터가 총 10개라면 9번만 하면 됩니다.

    i도 0부터 시작이므로

    i는 0일 때 1회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.

    i는 1일 때 2회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.

    i는 2일 때 3회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.

    i는 3일 때 4회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.

    .

    .

    i는 6일 때 7회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.

    i는 7일 때 8회전을 하고 비교합니다. i < 8인지 Yes이므로 계속 진행합니다.

    i는 8일 때 9회전을 하고 비교합니다. i < 8인지 No이므로 수행을 중지합니다.

    결국 i < 8일 때까지 수행하면 9회전을 하게 됩니다.

    C언어는 배열의 위치가 0부터 시작하기 때문에 이런 차이가 발생함을 염두에 두고 학습하세요.

    종료 기준값을 확인할 때는 반드시 디버깅을 직접 수행한 후 판단을 해야 합니다.

    디버깅 없이 눈으로만 확인할 경우 맞는 것 같아 실수하는 경우과 많기 때문입니다. 이점 학습에 꼭 참고하세요.

    오늘도 즐거운 하루 되세요.

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.