알고리즘 76페이지를 보면 진수변환하는 플로우차트가 있는데 문제 4번항이 이해가 되지를 않습니다.
정답은 A(E+1)인데요.
변수E는 1 0 1 1 1순으로 나오는 것은 이해가 되는데요. 그리고 이렇게 계산이 되어 나온 E를 A배열에 넣어서 출력하는
부분인데, A(E+1)이 출력이 된다면 값이 계속 겹쳐서 덮어 써지지 않나요?
즉, E A(E+1)
1 A(2)
0 A(1)
1 A(2)
1 A(2)
1 A(2)
E는 8번 부분(E=INT(C/D))에서 계속 갱신 되므로 위와 같이 A(2)에 다시 덮어 써지던지 아니면 A(1)에 넣어서 출력이 되기도 하구요.
물론 우연히도 A(2)에는 1만 계속 덮어써져서 그리고 A(1)는 0만 덮어써져서 얼핏 보면 문제가 없어 보이기도 합니다만...
제 생각에는 8번에서 구한 E를 10번 검정동그라미 앞부분에서 +1을 해서 A배열의 자리위치를 맞추어 줘야 할 것 같습니다. 그리고 순서데로 A(1), A(2), A(3)....순으로 출력되어야 하지않을까 싶습니다.
즉, 9번 검정동그라미와 10번 검정동그라미 사이에 배열 A의 자리 수를 조정하는 부분이 필요할 것으로 판단이 됩니다.
안녕하세요.
배열에 저장된 값이 0부터 저장이 되어 있기 때문입니다.
몫이 구해진 진수인데, 구해진 값이 1이라면 배열에서 1이 들어있는 위치를 찾아야 합니다.
배열에는 A(1)에는 0이, A(2)에는 1이 A(3)에는 2와 같이 실제 출력할 값보다 배열의 위치가 1씩 크므로
E+1을 하여 E가 3이면, 즉 출력할 값이 3이면
A(E+1)을 하여 A(4)에 있는 값 3을 출력하는 원리인 것이죠.
오늘도 즐거운 하루 되세요.
-
*2016-03-31 09:08:32
안녕하세요.
배열에 저장된 값이 0부터 저장이 되어 있기 때문입니다.
몫이 구해진 진수인데, 구해진 값이 1이라면 배열에서 1이 들어있는 위치를 찾아야 합니다.
배열에는 A(1)에는 0이, A(2)에는 1이 A(3)에는 2와 같이 실제 출력할 값보다 배열의 위치가 1씩 크므로
E+1을 하여 E가 3이면, 즉 출력할 값이 3이면
A(E+1)을 하여 A(4)에 있는 값 3을 출력하는 원리인 것이죠.
오늘도 즐거운 하루 되세요.