순서도에서
i=2, 10, 1
J=1, 5, 1
K=i-J
이 부분을
C언어 코드에서
i=0 ; i<=8 ; i++
J=0 ; J<=4 ; J++
K=i-J
왜 이렇게 작성해야하는지 이해가 안됩니다.
순서도에서 반복 변수 i는 1회전일 때 2, 2회전일 때 3 이니까 2부터 10까지 반복하고
반복변수에서 행 값인 J를 빼면 열 값인 K가 나오는 걸로 이해를 했는데,
C언어 코드를 보면 반복 변수 i를 왜 0부터 8까지 반복하는 거죠?
C언어에서 배열은 0부터 시작이라는 건 아는데 그렇다면 반복 변수는 1부터 9까지 아닌가요?
0부터 8까지 반복한다면 열 값 K는 어떻게 i-J가 될 수 있죠?
제가 어느부분에서 잘못 이해를 하고 있는건지 알려주시면 감사하겠습니다.
안녕하세요 길벗수험서 운영팀입니다.
i-j의 값을 맞추기 위해서 입니다.
순서도에서는 값이 들어가는 순서대로 배열의 위치가 (1,1) (1,2) (2,1)로 들어가죠 여기서 열은 i-j로 구해진 값으로 차례대로 2-1 2-1 3-1이 됩니다.
코드에서는 행 위치를 잡기 위해 두번째 배열의 시작 주소를 0으로 할 수밖에 없습니다.
이에 따라 i의 값이 1 감소하게 되고, 추가로 배열이 0부터 시작한다는 원인으로 인해 또 1이 감소하게 되죠.
이렇게 수행해야면 (0,0) (0,1) (1,0)에 차례대로 값이 들어가게 되고, i-j로 구해진 값을 나열하게 되면 0-0 0-0 1-0이 됩니다.
순서도로 구해지는 행열의 위치와, 코드로 구해지는 행열의 위치를 디버깅표로 값을 나열해가며 어떻게 변화하도록 구성했는지 추적해보세요.
행복한 하루되세요 :)
-
관리자2021-10-04 11:22:11
안녕하세요 길벗수험서 운영팀입니다.
i-j의 값을 맞추기 위해서 입니다.
순서도에서는 값이 들어가는 순서대로 배열의 위치가 (1,1) (1,2) (2,1)로 들어가죠 여기서 열은 i-j로 구해진 값으로 차례대로 2-1 2-1 3-1이 됩니다.
코드에서는 행 위치를 잡기 위해 두번째 배열의 시작 주소를 0으로 할 수밖에 없습니다.
이에 따라 i의 값이 1 감소하게 되고, 추가로 배열이 0부터 시작한다는 원인으로 인해 또 1이 감소하게 되죠.
이렇게 수행해야면 (0,0) (0,1) (1,0)에 차례대로 값이 들어가게 되고, i-j로 구해진 값을 나열하게 되면 0-0 0-0 1-0이 됩니다.
순서도로 구해지는 행열의 위치와, 코드로 구해지는 행열의 위치를 디버깅표로 값을 나열해가며 어떻게 변화하도록 구성했는지 추적해보세요.
행복한 하루되세요 :)