두번째 반복문 조건식에
for (j = L; j != m + n; j += n) 부분에서 j != m + n 에 + n 이 붙는 이유를 이해 못하겠습니다.
그냥 j != m 으로 해도 되지 않는가요?
안녕하세요 길벗수험서 운영팀입니다.
순서도를 C코드로 옮기면서 조금 어려워진 코드라 이해가 어려울 수 있습니다.
([반복 j=l, m, n] 구현하기 위한 가장 간단한 방법을 고민하다가 선택했습니다.)
언제나 그렇듯이 디버깅을 하여 각 변수가 갖고 있는 값들의 변화를 살펴보세요.
순서도와 달리 C코드에서 변수 m은 4, 0을 반복하게 됩니다.
이 때 j != m 조건으로 for문을 수행하게 되면 j는
1회 반복(m=4) : 0, 1, 2, 3
2회 반복(m=0) : 4, 3, 2, 1
...
이렇게 반복하게 됩니다. (0~3, 4~1 반복)
m과 같아지는 시점에서는 k++;과 a[i][j]=k;를 수행하지 못하게 되기 때문이죠.
이로인해 증감값을 갖는 n을 더해 5가 아닐 때, 또는 -1이 아닐 때를 기준으로 삼아
0~4, 4~0을 수행하도록 구성한 것입니다.
아래 이미지는 회원님의 조건으로 출력한 코드이니 참고하시기 바랍니다.
행복한 하루되세요 :)
-
관리자2019-08-29 10:21:19
안녕하세요 길벗수험서 운영팀입니다.
순서도를 C코드로 옮기면서 조금 어려워진 코드라 이해가 어려울 수 있습니다.
([반복 j=l, m, n] 구현하기 위한 가장 간단한 방법을 고민하다가 선택했습니다.)
언제나 그렇듯이 디버깅을 하여 각 변수가 갖고 있는 값들의 변화를 살펴보세요.
순서도와 달리 C코드에서 변수 m은 4, 0을 반복하게 됩니다.
이 때 j != m 조건으로 for문을 수행하게 되면 j는
1회 반복(m=4) : 0, 1, 2, 3
2회 반복(m=0) : 4, 3, 2, 1
...
이렇게 반복하게 됩니다. (0~3, 4~1 반복)
m과 같아지는 시점에서는 k++;과 a[i][j]=k;를 수행하지 못하게 되기 때문이죠.
이로인해 증감값을 갖는 n을 더해 5가 아닐 때, 또는 -1이 아닐 때를 기준으로 삼아
0~4, 4~0을 수행하도록 구성한 것입니다.
아래 이미지는 회원님의 조건으로 출력한 코드이니 참고하시기 바랍니다.
행복한 하루되세요 :)