Page 72 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 72

09    if(x == 0)                        /* 0이면 */
                     10      d[digits++] = dchar[0];           /* 변환 후에도 0 */
                     11    else
                     12      while(x){
                     13         1  d[digits++] = dchar[x % n];    /* n으로 나눈 나머지를 저장 */
                     14         2  x /= n;
                     15      }
                     16    return digits;
                     17  }
                     18                                                       (실습 2-8[B]에서 계속)



                   card_convr 함수는 정수 x를 n진수로 변환한 값의 각 자리의 문자를 char형 배열 d에 저장
                   하고 그 자릿수(배열에 저장한 문자수)를 반환하는 함수입니다. char형의 배열 dchar는

                   "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"로 초기화되므로 각 문자는 아래
                   식으로 접근할 수 있습니다.


                     • 숫자 문자            •알파벳
                         dchar[0] … 문자 '0'     dchar[10] … 문자 'A'
                         dchar[1] … 문자 '1'     dchar[11] … 문자 'B'
                          … 중략 …              … 중략 …
                         dchar[9] … 문자 '9'     dchar[35] … 문자 'Z'



                   그림 2-12에서 구체적인 예를 들어 설명하겠습니다. x가 59이고 n이 16이면 x % n은 11입
                   니다.                                                dchar[x % n]의 결과값은 문자 'B'입니다.


                          0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16    …    33  34  35  36
                    dchar   0  1  2  3  4  5  6  7  8  9 A B C D E  F G    …    X Y  Z\0
                                 dchar[x  % n]        B

                            [그림 2-12] dchar[x % n]의 문자(x는 59, n은 16)


                   실습 2-8[A]의 0으로 초기화한 변수 digits는 변환한 다음 수의 자릿수를 나타내기 위한 변

                   수입니다. while문의 루프 본문은 아래의 작업을 수행합니다.


                      1    먼저 x를 n으로 나눈 나머지를 인덱스로 하는, 배열 dchar 안의 문자 dchar[x % n]을 배열 d의 요소
                       d[digits]에 대입하고 digits 값을 증가합니다.
                      2  x를 n으로 나눕니다.

                      x % n이 11이면 문자 'B‘를 d[digits]에 대입하고, 그 후 digits 값을 증가합니다(보충수업 2-7).


                   72   C 알고리즘
   67   68   69   70   71   72   73   74   75   76   77