2017년 특별개정판
p.392 10번 문제인데요,
if j { s=j; f=n-j: } 인데 else { s= n - (j +1); f= j + 1; } 왜 else 뒷 부분은 저렇게 되는지 궁금합니다. 앞 부분은 s=j +1; f=n- (j+1); 이 되어야하지 않나요? 숫자를 넣어 이해하기 쉽게 설명해주시면 감사하겠습니다!
안녕하세요.
7행 7열의 크기를 갖는 배열이지만 C언어는 배열의 위치가 0부터 시작합니다.
s는 행의 시작위치를, f는 행의 끝 위치를 지정해 주는 변수입니다.
j 그러므로 j, 즉 열의 위치가 0~6까지 증가됩니다. 중간열(ct)가 3이므로 j가 0, 1, 2로 변화할 때 s, 즉 행의 시작 위치도 0, 1, 2로 변화됩니다. 그러므로 s = j; 입니다. f, 즉 행의 끝 위치는 6, 5, 4로 변화되는데, 이는 f = n - j;로 구할 수 있습니다. j가 0일 때 f = 7-0 = 7이 됩니다. 이후 행의 위치로 사용되는 안쪽 for문에서 q <= f-1 까지 진행하므로 결국 행의 끝 위치는 6까지 진행합니다. 같은 원리로 j가 1, 2일 때 f는 6, 5인데, 안쪽 for문에서 실제 적용될 때 행의 끝 위치는 5, 4로 진행됩니다. 중간열(ct) 부터는 j가 3, 4, 5, 6으로 변화할 때 s, 즉 행의 시작 위치도 3, 2, 1, 0으로 변화되는데, 이는 s = n - (j+1);로 구할 수 있습니다. j가 3일 때 s=7-(3+1) = 3 j가 4일 때 s=7-(4+1) = 2 j가 5일 때 s=7-(4+1) = 1 j가 6일 때 s=7-(4+1) = 0 으로 진행됩니다. f, 즉 행의 끝 위치는 3, 4, 5, 6으로 j와 동일하게 적용되는데 안쪽 for문에서 실제 적용될 때 q <= f-1까지 진행하므로 -1 될 것을 감안하여 f = j+1;로 적용한 것입니다. 오늘도 즐거운 하루 되세요.
-
*2017-04-06 09:19:33
안녕하세요.
7행 7열의 크기를 갖는 배열이지만 C언어는 배열의 위치가 0부터 시작합니다.
s는 행의 시작위치를, f는 행의 끝 위치를 지정해 주는 변수입니다.
j
그러므로 j, 즉 열의 위치가 0~6까지 증가됩니다.
중간열(ct)가 3이므로
j가 0, 1, 2로 변화할 때
s, 즉 행의 시작 위치도 0, 1, 2로 변화됩니다.
그러므로 s = j; 입니다.
f, 즉 행의 끝 위치는 6, 5, 4로 변화되는데, 이는
f = n - j;로 구할 수 있습니다.
j가 0일 때 f = 7-0 = 7이 됩니다. 이후 행의 위치로 사용되는 안쪽 for문에서 q <= f-1 까지 진행하므로 결국 행의 끝 위치는 6까지 진행합니다.
같은 원리로 j가 1, 2일 때 f는 6, 5인데, 안쪽 for문에서 실제 적용될 때 행의 끝 위치는 5, 4로 진행됩니다.
중간열(ct) 부터는
j가 3, 4, 5, 6으로 변화할 때
s, 즉 행의 시작 위치도 3, 2, 1, 0으로 변화되는데, 이는
s = n - (j+1);로 구할 수 있습니다.
j가 3일 때 s=7-(3+1) = 3
j가 4일 때 s=7-(4+1) = 2
j가 5일 때 s=7-(4+1) = 1
j가 6일 때 s=7-(4+1) = 0
으로 진행됩니다.
f, 즉 행의 끝 위치는 3, 4, 5, 6으로 j와 동일하게 적용되는데
안쪽 for문에서 실제 적용될 때 q <= f-1까지 진행하므로 -1 될 것을 감안하여
f = j+1;로 적용한 것입니다.
오늘도 즐거운 하루 되세요.