책 내용 질문하기
99쪽 문제2번 질문입니다
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
99
조회수
170
작성일
2019-05-07
작성자
탈퇴*원
첨부파일

다른건 이해가 가는데

 hist[n-1] += 1;

여기서 hist[n] 으로 해도 되지 않나요?

왜 +=1 을 하는지 모르겠어요 

답변
2019-05-07 13:52:40

안녕하세요 길벗수험서 운영팀입니다.

 

C코드에서 배열은 6으로 선언했을 시 hist[0] ~ hist[5] 의 6개 공간이 배정됩니다.

 

rand()%6 + 1

을 하는 경우 1~6의 수가 랜덤으로 나오게 됩니다.

이때 이 값으로 hist 배열에 배정하는 경우 존재할 수 없는 hist[6]이라는 공간에 값을 저장하게 되죠.

 

이를 방지하기 위해 hist[n-1]을 사용한 것입니다.

 

물론, 아래와 같이 코드를 짤수 있습니다.

n=rand()%6;

hist[n]+=1;

 

다만 문제 코드에서는 n에 +1을 하여 저장했다는 것을 고려하세요.

 

행복한 하루되세요 :)

  • 관리자
    2019-05-07 13:52:40

    안녕하세요 길벗수험서 운영팀입니다.

     

    C코드에서 배열은 6으로 선언했을 시 hist[0] ~ hist[5] 의 6개 공간이 배정됩니다.

     

    rand()%6 + 1

    을 하는 경우 1~6의 수가 랜덤으로 나오게 됩니다.

    이때 이 값으로 hist 배열에 배정하는 경우 존재할 수 없는 hist[6]이라는 공간에 값을 저장하게 되죠.

     

    이를 방지하기 위해 hist[n-1]을 사용한 것입니다.

     

    물론, 아래와 같이 코드를 짤수 있습니다.

    n=rand()%6;

    hist[n]+=1;

     

    다만 문제 코드에서는 n에 +1을 하여 저장했다는 것을 고려하세요.

     

    행복한 하루되세요 :)

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