정체불명의 모모
c++ 02 : 2차원 배열 (어서와c++은 처음이지?) 본문
= 다차원 배열은 "배열의 배열"로 불립니다.
예를 들어서 2차원 배열은 요소로 이루어진 2차원 테이블을 상상하면 된다.
int s[3][5] ; |
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으로 변경되었다.
참 잼있닿ㅎㅎ 컴퓨터 언어는ㅎ
'프로그래밍(c++)' 카테고리의 다른 글
c++ 04 : 객체 지향이란??? [ 클래스와 객체 / 어서와c++은 처음이지] (0) | 2019.12.17 |
---|---|
c++ 문제 : Tic-Tac-Toe게임(어서와c++은 처음이지?) (1) | 2019.12.05 |
c++ 문제 : 사과를 제일 좋아하는 사람 찾기 (어서와c++은 처음이지?) (1) | 2019.12.04 |
c++ 문제 : 배열에서 최대값 찾기 (어서와c++은 처음이지?) (0) | 2019.12.03 |
c++ 02 : 범위-기반for 루프 (어서와c++은 처음이지?) (0) | 2019.12.03 |