while ( i <= cnt ) <- i=0
while ( j <= cnt ) <- j=0
for (int x = 0 ; x <= cnt ; x++)
i,j,x 전부 범위가 0 ~ cnt 까지 되어 있는데
이는 flow chart 에서 1 ~ cnt 인 것이므로
<= 가 아닌 < 로 정정해야 맞습니다.
안녕하세요 길벗수험서 운영팀입니다.
606쪽을 기준으로 설명드리겠습니다.
(순서도와 별개로 코드만으로 이해하시는 것이 편합니다.)
코드의 cnt는 초기값을 -1을 기준으로 삼고 있습니다. (7번)
이후 8~13번을 수행하면서 cnt가 1씩 누적되고, 자료를 읽다가 EOF를 만나면 break하게 되죠.
그렇다면 각 배열의 자료는 0부터 자료가 없는 위치까지 cnt가 누적될 것입니다.
(예를 들어 5개의 자료가 있다면 0~4에 저장되고 cnt가 5가 될때 EOF가 되어 break됨)
EOF를 통해 break 되었다면 자료가 누적된 마지막 위치 정보를 획득하기 위해 14번의 코드에서 cnt--를 수행합니다.
결국 마지막 값이 있는 배열의 위치는 cnt 값이 되게 되죠.
(5개의 자료가 있다면 cnt의 값이 5였다가 cnt--를 만나 4가 됨. 결국 0~4에 값이 저장되고 cnt는 4의 값을 가짐)
때문에 while의 조건은 <=cnt 가 되어야 맞습니다.
행복한 하루되세요 :)
-
관리자2019-08-14 13:15:37
안녕하세요 길벗수험서 운영팀입니다.
606쪽을 기준으로 설명드리겠습니다.
(순서도와 별개로 코드만으로 이해하시는 것이 편합니다.)
코드의 cnt는 초기값을 -1을 기준으로 삼고 있습니다. (7번)
이후 8~13번을 수행하면서 cnt가 1씩 누적되고, 자료를 읽다가 EOF를 만나면 break하게 되죠.
그렇다면 각 배열의 자료는 0부터 자료가 없는 위치까지 cnt가 누적될 것입니다.
(예를 들어 5개의 자료가 있다면 0~4에 저장되고 cnt가 5가 될때 EOF가 되어 break됨)
EOF를 통해 break 되었다면 자료가 누적된 마지막 위치 정보를 획득하기 위해 14번의 코드에서 cnt--를 수행합니다.
결국 마지막 값이 있는 배열의 위치는 cnt 값이 되게 되죠.
(5개의 자료가 있다면 cnt의 값이 5였다가 cnt--를 만나 4가 됨. 결국 0~4에 값이 저장되고 cnt는 4의 값을 가짐)
때문에 while의 조건은 <=cnt 가 되어야 맞습니다.
행복한 하루되세요 :)