275페이지 c언어 동그라미14번에서 왜 조건이 j<8-i인지 이해가 가지 않습니다.
c언어에서는 순서도에 비해 i가 1 작으니까 J<9-i가 되는 것 아닌가요?
.
안녕하세요. 길벗 수험서 운영팀입니다.
배열의 각 주소값을 가리키는 i가 1작은 것만 생각하신다면 9-i가 맞습니다.
다만 C언어의 경우 배열의 주소가 0부터 시작한다는 것 또한 고려하셔야 합니다.
275쪽의 배열 data[10]은 data[0]~data[9]까지 10개의 저장소를 갖습니다.
첫 회전을 생각해보겠습니다.
첫 회전에서는 10개의 값을 버블정렬하기 위해서는 9번째에 if문이 data[8]과 data[9]를 비교하는 과정이 있어야 합니다.
첫 회전에서 i는 0값을 가집니다.(코드 6번, 코드 7번)
여기에서 회원님이 말씀하신 j<9-i를 적용하게 되면, 마지막에 회전하는 j의 값은 8이 됩니다.
j값이 8을 갖고 코드 9번 이후를 실행한다고 가정해 보겠습니다.
코드 9번에서 j가 9가 되고, 코드 10번에서 if문은 data[9]와 존재하지 않는 data[10]을 비교하는 조건문이 성립되어 버립니다.
오류가 발생하게 되죠.
이와 같이 코드나 순서도에서 의문점일 발생하는 경우 해당 의문이 발생하는 지점의 한계치 또는 분기점이 발생할 수 있는 수치를 넣어 디버깅하면 간단하게 해결되는 경우가 있습니다. 디버깅표를 모두 작성하지 않아도 의문점이 나는 부분들은 간단하게 디버깅해보시는 것을 권해드립니다.
행복한 하루되세요.^^
-
*2018-09-28 16:20:16
안녕하세요. 길벗 수험서 운영팀입니다.
배열의 각 주소값을 가리키는 i가 1작은 것만 생각하신다면 9-i가 맞습니다.
다만 C언어의 경우 배열의 주소가 0부터 시작한다는 것 또한 고려하셔야 합니다.
275쪽의 배열 data[10]은 data[0]~data[9]까지 10개의 저장소를 갖습니다.
첫 회전을 생각해보겠습니다.
첫 회전에서는 10개의 값을 버블정렬하기 위해서는 9번째에 if문이 data[8]과 data[9]를 비교하는 과정이 있어야 합니다.
첫 회전에서 i는 0값을 가집니다.(코드 6번, 코드 7번)
여기에서 회원님이 말씀하신 j<9-i를 적용하게 되면, 마지막에 회전하는 j의 값은 8이 됩니다.
j값이 8을 갖고 코드 9번 이후를 실행한다고 가정해 보겠습니다.
코드 9번에서 j가 9가 되고, 코드 10번에서 if문은 data[9]와 존재하지 않는 data[10]을 비교하는 조건문이 성립되어 버립니다.
오류가 발생하게 되죠.
이와 같이 코드나 순서도에서 의문점일 발생하는 경우 해당 의문이 발생하는 지점의 한계치 또는 분기점이 발생할 수 있는 수치를 넣어 디버깅하면 간단하게 해결되는 경우가 있습니다. 디버깅표를 모두 작성하지 않아도 의문점이 나는 부분들은 간단하게 디버깅해보시는 것을 권해드립니다.
행복한 하루되세요.^^