개발/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