제 1권
p 192
거꾸로 출력 순서도에서 반복 i=c,1,-1이 어떤 식으로 해서 거꾸로 배열에 출력되는 지와 마찬가지로 C언어에서 for(i=c; i>=0; i-)이 어떤 식으로 거꾸로 출력되는지에 대해 이해가 잘 되지 않습니다.
안녕하세요.
2진수로 변환 될 때마다 나머지를 A[1]부터 저장을 합니다.
알고리즘의 이해에서도 확인했듯이 저장된 값을 거꾸로 출력해야 합니다.
거꾸로 출력한다는 것은
2진수로 변환된 값이 순서대로 1110이라면
A[1]에 1
A[2]에 1
A[3]에 1
A[4]에 0
이 기억되어 있다는 것이며
A 배열의 위치는 C에 기억되어 있습니다.
그러므로 i를 c부터 1까지 -1씩 증가하면서 출력하면 거꾸로 출력됩니다.
위를 예로 들면 i가 현재 4이므로 A[i]는 A[4]가 되어 0이 출력되고
이어서 -1 증가하여 i는 3이 되어 A[i]는 A[3]이 되어 1이 출력됩니다.
이와 같이 A[4]부터 A[1]까지 거꾸로 출력됩니다.
C언어는 배열의 위치가 0부터 시작하므로 A[0] ~ 저장되며
거꾸로 출력은 C의 현재 위치부터 A[0]까지 거꾸로 진행됩니다.
오늘도 즐거운 하루 되세요.
-
*2017-03-28 09:42:38
안녕하세요.
2진수로 변환 될 때마다 나머지를 A[1]부터 저장을 합니다.
알고리즘의 이해에서도 확인했듯이 저장된 값을 거꾸로 출력해야 합니다.
거꾸로 출력한다는 것은
2진수로 변환된 값이 순서대로 1110이라면
A[1]에 1
A[2]에 1
A[3]에 1
A[4]에 0
이 기억되어 있다는 것이며
A 배열의 위치는 C에 기억되어 있습니다.
그러므로 i를 c부터 1까지 -1씩 증가하면서 출력하면 거꾸로 출력됩니다.
위를 예로 들면 i가 현재 4이므로 A[i]는 A[4]가 되어 0이 출력되고
이어서 -1 증가하여 i는 3이 되어 A[i]는 A[3]이 되어 1이 출력됩니다.
이와 같이 A[4]부터 A[1]까지 거꾸로 출력됩니다.
C언어는 배열의 위치가 0부터 시작하므로 A[0] ~ 저장되며
거꾸로 출력은 C의 현재 위치부터 A[0]까지 거꾸로 진행됩니다.
오늘도 즐거운 하루 되세요.