개발/C++

8장 다차원 배열

민돌이2 2019. 1. 16. 02:57

한성대학교 김설현교수님 강의내용을 바탕으로 작성함

 

2차원 배열

2차원 배열을 선언하는 구문은 다음과 같다.

int matrix[5][5];

 

배열의 초기화

2차원 배열도 배열의 선언과 동시에 초기화 가능하다.

아래의 배열 초기화 방법을

int array[4][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };

아래의 방식으로 초기화 할수있다.

int array[4][3];
arrary[0][0] = 1; arrary[0][1] = 2; arrary[0][2] = 3;
arrary[1][0] = 4; arrary[1][1] = 5; arrary[1][2] = 6;
arrary[2][0] = 7; arrary[2][1] = 8; arrary[2][2] = 9;
arrary[3][0] = 10; arrary[3][1] = 11; arrary[3][2] = 12;

 

입력 값으로 배열 초기화

사용자가 직접 입력한 값으로 배열을 초기화 할 수 있다.

const int ROW_SIZE = 2; // 배열의 크기는 대부분 대문자로 사용
const int COL_SIZE = 3;

int  matrix[ROW_SIZE][COL_SIZE];
for (int i = 0; i < ROW_SIZE; i++)
	for (int j = 0; j < COL_SIZE; j++)
		cin >> matrix[i][j];

 

배열 출력

2차원 배열을 반복문을 사용하여 배열의 각 요소를 출력할 수 있다.

for (int row = 0; row < ROW_SIZE; row++) 
{
	for (int column = 0; column < COL_SIZE; column++) 
		cout << matrix[row][column] << " ";
	cout << endl;
}

 

함수로 2차원 배열 전달

2차원 배열을 함수로 전달할 때 1차원 배열과 다르게 매개변수의 유형 선언에서 열(column)의 크기를 지정해야 한다.

int sum(const int a[][4], int rowSize) 
{
	int total = 0;
	for (int row = 0; row < rowSize; row++)
		for (int column = 0; column < 4; column++)
			total += a[row][column];
	return total;
}

int main()
{
	const int ROW_SIZE = 3; //sum함수에서 사용하기에 상수선언
	int m[ROW_SIZE][4];

	for (int i = 0; i < ROW_SIZE; i++)
		for (int j = 0; j < 4; j++)
			m[i][j] = i + j;


	cout << "Sum is " << sum(m, ROW_SIZE) << endl;

	system("Pause");
	return 0;
}

출력 결과

 

다차원 배열

2차원 배열을 일반화 하여 n차원(n>=3)을 선언할 수 있다.

 

다차원 배열 선언

2차원 배열과 같이 추가로 선언하면 된다.

1차원은 직선 2차원은 바둑판 3차원은 입체로 생각하면 편하다.

double socres[6][5][4] ;

 

함수로 다차원 배열 전달

함수로 전달할 때 2차원배열과 마찬가지로 매개변수의 유형 선언에서 열(column)의 크기를 지정해야 한다.

void computeTH(double data[][5][2], int numdays) 
{
	for (int day = 0; day < numdays; day++) 
	{
		double temperatureTotal = 0, humidityTotal = 0;
		for (int hour = 0; hour < 5; hour++) 
		{
			temperatureTotal += data[day][hour][0];
			humidityTotal += data[day][hour][1];
		}
		cout << "Day " << day + 1 << " 의 평균온도 : " << temperatureTotal / 5 << endl;
		cout << "Day " << day + 1 << " 의 평균습도 : " << humidityTotal / 5 << endl;
	}
	return;
}

int main()
{
	const int NUMBER_OF_DAYS = 3;
	//3일, 5시간, 2가지(온도 습도)
	double dataTH[NUMBER_OF_DAYS][5][2] = { 
	{{30,60},{31,78},{30,66},{29,58},{28,69}}, 
	{{28,58},{29,57},{31,68},{30,60},{29,62}},
	{{32,69},{30,72},{27,66},{29,59},{28,61}} };

	computeTH(dataTH, NUMBER_OF_DAYS); //함수호출

	system("Pause");
	return 0;
}

출력 결과

728x90