9-3. 배열의 활용

9-3-가.불규칙한 정보

배열의 기본적인 용도는 동일한 타입의 집합적인 정보를 다루는 것인데 아주 간단한 구조이지만 활용 용도는 헤아릴 수 없을 정도로 많다. 이 절에서는 배열로 할 수 있는 전형적인 몇 가지 기법에 대해 요약적으로 알아보기로 한다. 다음 예제는 2차원 배열을 사용하여 문자 'C'로 큼직하게 C문자를 써 본다.

 

: ArrayC

#include <Turboc.h>

 

void main()

{

     int i;

     int arPos[40][2]={

          {48,6},{47,5},{46,4},{45,4},{44,3},{43,3},{42,3},

          {41,3},{40,3},{40,3},{39,4},{38,4},{37,5},{36,6},

          {36,7},{35,8},{35,9},{35,10},{34,11},{34,12},

          {34,13},{34,14},{35,15},{35,16},{35,17},{36,18},

          {37,19},{38,20},{39,20},{40,21},{41,21},{42,21},

          {42,21},{43,21},{44,20},{45,20},{46,20},{47,19},

          {48,18},{49,17}

     };

 

     clrscr();

     for (i=0;i<sizeof(arPos)/sizeof(arPos[0]);i++) {

          gotoxy(arPos[i][0],arPos[i][1]);

          putch('C');

    }

}

 

arPos 배열에 C문자를 구성하는 40개의 점좌표가 저장되어 있다. 각 좌표는 (x,y)로 구성되어 있고 40개의 좌표에 규칙성이 전혀 없기 때문에 이런 식으로 초기값을 일일이 지정해야 한다. arPos 배열에 좌표값이 저장되어 있으므로 0~39까지 루프를 돌면서 (arPos[i][0], arPos[i][1]) 좌표에 'C'를 출력했다. 실행 결과는 다음과 같다.

 

           CCCCC

         CC     CC

        C         C

       C           C

       C

      C

      C

      C

     C

     C

     C

     C

      C

      C

      C             C

       C           C

        C         C

         CC    CCC

           CCCC

 

그렇다면 arPos의 초기값은 어떻게 구했는지 궁금할 것이다. 이 좌표들은 모눈종이에 C자를 크게 그려 놓고 각 좌표를 일일이 조사한 것이며 특별한 테크닉이 있는 것은 아니다. 쉽게 말해서 체력과 시간만 있다면 이런 예제는 얼마든지 만들 수 있다.