[C++]C++문법 1차원배열 / 2차원배열 공부하기
본문 바로가기

C#

[C++]C++문법 1차원배열 / 2차원배열 공부하기

728x90
반응형

오늘은 C++문법 중 1차원배열과 2차원배열을 공부했습니다.

 

책은 C++하이킹책으로 공부했습니다.

 

배열 기본 형식

자료형 배열명[원소의 개수];

EX) int a [5];

배열의 원소 개수 선언 형식

배열명[0]~배열명[n-1]

 

배열 선언 후 값을 대입하고 원소를 출력하기

#include<iostream>

using namespace std;

void main() {
int a[5];
int i;
a[0] = 50;
a[1] = 100;
a[2] = 150;
a[3] = 200;
a[4] = 250;

for (i = 0; i < 5; i++) {
cout << a[i] << "\t";
}
}

 

1차원 배열의 초기화

 

1.배열의 개수가 초깃값의 개수가 동일할 때

int a[5]={10,20,30,40,50};

 

2. 배열의 초깃값이 지정되어 있을 경우에는 배열의 개수를 생략할 수 없다.

int a[]={10,20,30};

 

3.배열의 개수보다 초깃값이 적을 경우에는 나머지 영역에 0을 채운다.

int a[5] = {10,20,30}

 

4. 에러가 나는 경우

->배열의 개수보다 초깃값을 많이 주었을 때

int a[5] = {10,20,30,40,50,60,70}

->초깃값도 안주고 배열의 갯수도 선언하지 않을 때

int a[];

 

배열을 사용해서 총합과 평균 구하기

#include<iostream>

using namespace std;

void main() {
int a[5] = { 85,90,75,100,95 };
int tot = 0;
double avg;
int i;

for (i = 0; i < 5; i++) {
tot += a[i];
}
avg = (double)tot / 5.0;
cout << "총합 :" << tot << "\n";
cout << "평균 : " << avg << endl;

}

 

3.배열을 사용해서 최댓값 구하기

#include<iostream>

using namespace std;

void main() {
int a[5];
int max;
int i;
cout << "정수형 데이터를 5개 입력하라\n";
for (i = 0; i < 5; i++) {
cout << "a[" << i << "]->";
cin >> a[i];
}
max = a[0];
for (i = 1; i < 5; i++) {
if (a[i] > max) {
max = a[i];
}
}
cout << "최댓값 : " << max;
}

 

 

2차원배열에 대해 알아보기

2차원 배열은 행(row) 열(column) 로 이루어진 표(행렬)을 연상하면 이해하기 쉽다.

 

2차원 배열 선언 기본 형식

자료형 배열명[행의개수][열의개수];

 

2차원 배열의 초기화

->2차원 배열을 선언만 해두면 여기에는 알 수 없는 값으로 가득차게된다(자동변수라는 전제가 있기 때문이다.)

2차원 배열을 초기화하는 방법

EX)

int a[3][4] ={{90,85,95,100},    // 0번째 형에 대한 초기화

{75,95,80,90},                      // 1번째 행에 대한 초기화

{90,80,70,60}                       // 2번째 행에 대한 초기화

};

 

#define문을 이용한 매크로 상수 정의

열과 행이 변동해도 프로그램을 손쉽게 수정하기 위해서는 매크로 상수를 정의하면 효율적이다.

 

#define ROW 3

#define COL 5

#define         ROW            3

선행처리자 매크로상수 치환할내용

 

2차원 배열을 초기화하고 출력하기

#include<iostream>
#define ROW 3
#define COL 4
using namespace std;

void main() {
int a[ROW][COL] = { {90,85,95,100},
{75,95,80,90},
{90,80,70,60} };
int r, c;
cout << "\n 이중 for문으로 배열을 출력";
cout << "\n-------------------------------\n";

for (r = 0; r < ROW; r++) {
for (c = 0; c < COL; c++) {
cout<<"\t" << a[r][c];
}
cout << "\n";
}
}

두 행렬의 합 구하기

#include<iostream>
using namespace std;

void main() {
int a[3][4] = { {10,20,30,40},{20,40,60,80},{10,30,50,70} };
int b[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} };
int c[3][4];
int r, r1;
for (r = 0; r < 3; r++) {
for (r1 = 0; r1 < 4; r1++) {
c[r][r1] = a[r][r1] + b[r][r1];
}
}
cout << "두 행렬의 합을 출력하기";
cout << "\n----------------------------\n";
for (r = 0; r < 3; r++) {
for (r1 = 0; r1 < 4; r1++) {
cout << " " << c[r][r1];
}
cout << endl;
}
}

 

결과창

2차원 배열을 사용해서 성적 구하기

#include<iostream>
using namespace std;
#define ROW 3
#define COL 5
void main() {
int a[ROW][COL] = { 0, };
int r, c;

for(r = 0; r < ROW; r++) {
a[r][0] = r + 1;
cout << "#" << a[r][0] << "번째 학생의 점수를 입력하세요\n";
for (c = 1; c < COL - 1; c++) {
cout << c << "번째 과목 : ";
cin >> a[r][c];
}
}
for (r = 0; r < ROW; r++) {
for (c = 1; c <= COL - 2; c++) {
a[r][COL - 1] += a[r][c];
}
}
cout << "\n\t\t**출력결과**";
cout << "\n--------------------------------------------------\n";
cout << "\n\t번호\t국어\t영어\t수학\t총점";
cout << "\n--------------------------------------------------\n";
for (r = 0; r < ROW; r++) {
for (c = 0; c < COL; c++) {
cout << "\t" << a[r][c];
}
cout << "\n";
}
}

 

 

 

이상으로 C++ 1차원배열/2차원배열 포스팅을 마치겠습니다.

반응형