본문 바로가기
개발/C++

8장 다차원 배열

by 민돌이2 2019. 1. 16.

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

 

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

'개발 > C++' 카테고리의 다른 글

11장 포인터와 동적 메모리 관리(후)  (0) 2019.05.09
11장 포인터와 동적 메모리 관리(전)  (0) 2019.05.08
10장 객체 지향 개념  (0) 2019.02.11
9장 객체와 클래스  (0) 2019.01.19
7장 1차원 배열  (0) 2019.01.15
6장 함수  (0) 2019.01.04
5장 반복문  (0) 2019.01.03
4장 수학함수  (0) 2018.12.30

댓글