9-3-나.재사용할 정보

다음 예제는 2차원 배열의 활용예인데 난수로 생성한 좌표를 배열에 저장해 놓고 역순으로 이 좌표를 재생한다. 실행해 보면 깨끗한 화면에 *가 100개 출력되고 출력된 순서대로 다시 사라질 것이다.

 

: RandArray

#include <Turboc.h>

 

void main()

{

     short arPt[100][2];

     int i;

 

     clrscr();

     for (i=0;i<100;i++) {

          arPt[i][0]=random(80);

          arPt[i][1]=random(25);

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

          putch('*');

          delay(20);

     }

 

     delay(2000);

     for (i=0;i<100;i++) {

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

          putch(' ');

          delay(20);

     }

}

 

난수로 선택한 임의 위치에 *를 100번 출력하는 것은 아주 쉽다. 루프를 100번 돌면서 gotoxy(random(80), random(25)); putch('*')만 100번 실행하면 된다. 이렇게 출력한 *를 순서대로 다시 지우려면 각 점들이 출력된 좌표를 일일이 기억하고 있어야 한다. 그렇지 않으면 원래 어디에 출력되어 있었는지 알 수가 없을 것이다. 컴퓨터는 별도로 기억시키지 않으면 다 잊어 버리므로 다시 사용할 정보는 항상 저장해 놓아야 한다.

이 예제에서 사용된 arPt 배열은 처음에 100개의 *를 출력할 때 난수로 선택한 좌표를 잠시 저장해 두기 위한 용도로 사용된다. 총 점의 개수가 100개이므로 1차 첨자의 크기가 100이고 각 점은 x,y 좌표쌍으로 구성되므로 2차 첨자의 크기는 2이다. arPt[n][0]는 n번째 점의 x좌표를, arPt[n][1]은 n번째 점의 y좌표를 저장한다.

난수로 *를 100번 출력하되 그 좌표를 배열에 저장해 두었다가 지울 때는 다시 이 배열의 선두부터 루프를 돌면서 원래 출력했던 자리에 공백을 출력하면 된다. 저장해야 할 좌표가 100개나 되고 각 좌표는 (x,y)의 쌍으로 구성되어 있지만 arPt 배열 단 하나만 있으면 이 정보들을 통째로 저장할 수 있다. 개별 변수 100개에 이 정보를 따로 저장하는 것은 불가능하다.