정체불명의 모모

c++ 02 : 2차원 배열 (어서와c++은 처음이지?) 본문

프로그래밍(c++)

c++ 02 : 2차원 배열 (어서와c++은 처음이지?)

정체불명의 모모 2019. 12. 4. 23:19

= 다차원 배열은  "배열의 배열"로 불립니다.

 예를 들어서 2차원 배열은 요소로 이루어진 2차원 테이블을 상상하면 된다.

 int s[3][5] ;

 3 X 5 2차원 배열

1. 2차원 배열의 초기화

 = 2차원 배열도 1차원과 마찬가지로 선언과 동시에 초기화할 수 있다. 다만 같은 행에서 

 속하는 초기값들은 중괄호 { } 로 따로 묶어주어야 한다.

 int s[3][5] = { {1,2,3,4,5} ,             // 첫 번째 행의 요소들의 초기값 

                   {6,7,8,9,10},             // 두 번째 행의 요소들의 초기값

                   {11,12,13,14,15}       // 세 번째 행의 요소들의 초기값

                 };

예제1. 구구단 (1단,2단,3단)

#include <iostream>

using namesapce std;

int main( )
{
   int table[HEIGHT][WIDTH];
   int r ,c ;
   
   for(r=0 ; r < HEIGHT ; r++)
   {
       for( c= 0 ; c < WIDTH ; c++)
        {
         table[r][c] = (r+1)*(c+1);
         }
    }
    
    for(r=0; r < HEIGHT ; r++)
    {
       for( c =0 ; c < WIDTH ; c++ )
       {
         cout << table[r][c] << ", " ;
       }
       
       cout << endl;
    }
   return 0;
   }

◈ 중간 점검

1. 다차원 배열 int a[3][2][10]에는 몇 개의 요소가 존재하는가?

  = 우선, 3차원 배열이다.  [참고 사이트 : https://enter.tistory.com/121 ]

     참고한 사이트의 예제로 알아 보겠습니다.

#include <iostream>

int main(void) 
{
    int arr1[2][3][4];
    double arr2[5][5][5];
    cout << "높이 2, 세로 3, 가로 4 int형(4Byte) 배열의 크기 : %d\n" << sizeof(arr1) <<endl;
    cout << "높이 5, 세로 5, 가로 5 double형(8Byte) 배열의 크기 : %d\n" << sizeof(arr2) <<endl;
    return 0 ;
 }

arr1은 int형으로 4byte이다. 그래서 2 X 3 X 4 X 4 = 96

arr2은 double형으로 8byte이다. 그래서 5 X 5 X 5 X 5 = 1000

sizeof( ) 함수는 = 자료형 크기를 구하는 함수이다.

여기서는 요소수를 말하고 있다.

 

사이트에 있는 예제를 추가로 하나 더 보자.

예제 ) 어느 고등학교 3학년 전체 학생의 국어와 수학점수를 반별로 구분하여 저장후 반별 평균을 구해보자.

         (반별 학생수는 3명이고, 총 학급의 수는 3개이다.)

using namespace std;

int main(void)
{
	int mean = 0, x, y, z;
	int record[3][3][2] = {
	  {   {70,80},
		  {94,90},
		  {70,85}
	  },
	  {    {83,90},
		   {95,60},
		   {90,82}
	  },
	  {    {98,89},
		   {99,94},
		   {91,87}
	  }
	};
	for (z = 0; z < 3; z++) {
		for (y = 0; y < 3; y++)
		{
			for (x = 0; x < 2; x++)
			{
				mean += record[z][y][x];
				
			}
			
		}
		cout << z + 1 << "반 전체 평균 : \b" << mean / 6 << endl;

		mean = 0;
		
	}
	return 0;
}

위 코드를 보면 요소수는 총 18개 이다.

 = 그렇기에 int a[3][2][10]의 요소수는 총 60개이다.

 

2. 다차원 배열 int a[3][2][10]의 모든 요소를 0으로 초기화 하는 문장을 작성하시오.

  int a[3][2][10] ={0,};

위의 예제를  0으로 초기화 해보기 위해 고쳐 보자.

for (z = 0; z < 3; z++) {
		for (y = 0; y < 3; y++)
		{
			for (x = 0; x < 2; x++)
			{
				mean += record[z][y][x];
				
			}
			
		}
		record[z][y][x] = { 0, };
		mean = record[z][y][x];
		cout << z + 1 << "반 전체 평균 : \b" << mean / 6 << endl;

record[z][y][z] = { 0, } ;을 해주니 반 전체 평균이 0으로 변경되었다.

 

참 잼있닿ㅎㅎ 컴퓨터 언어는ㅎ

Comments