회원 로그인
|
2차원 배열
C++ 2차원 배열
[배열]
- 동일한 타입의 데이타를 저장할 수 있는 변수로 저장된 데이타는 인덱스로 접근하게 됨
- 2차원 배열은 주로 같은 자료형을 가진 테이블 구조의 데이타를 저장하는 데 사용됨
[2차원 배열 문법]
1. 생성
자료형 배열명[행갯수][열갯수];
[2차원 배열의 초기화]
1. 생성과 함께 초기화
자료형 배열명[3][3] = {
{데이타00, 데이타01, 데이타02},
{데이타10, 데이타11, 데이타12},
{데이타20, 데이타21, 데이타22}
};
자료형 배열명[3][3] = {
데이타00, 데이타01, 데이타02,
데이타10, 데이타11, 데이타12,
데이타20, 데이타21, 데이타22
};
자료형 배열명[][3] = {
{데이타00, 데이타01, 데이타02},
{데이타10, 데이타11, 데이타12},
{데이타20, 데이타21, 데이타22}
};
2차원 배열과 2차원 반복문, switch문에 대한 예제
switch문은 if문과 같은 조건문임
[문법]
switch (정수식) {
case 기준정수값:
실행내용;
break;
case 기준정수값:
실행내용;
break;
...
default:
실행내용;
break;
}
* 모든 switch문은 if문으로 변경이 가능함
* 모든 if문은 switch문으로 변경할 수 있지는 않음
switch문으로 변경 가능한 if문
if (정수형변수또는식 == 기준정수값) ... elseif 동일
[배열]
- 동일한 타입의 데이타를 저장할 수 있는 변수로 저장된 데이타는 인덱스로 접근하게 됨
- 2차원 배열은 주로 같은 자료형을 가진 테이블 구조의 데이타를 저장하는 데 사용됨
[2차원 배열 문법]
1. 생성
자료형 배열명[행갯수][열갯수];
[2차원 배열의 초기화]
1. 생성과 함께 초기화
자료형 배열명[3][3] = {
{데이타00, 데이타01, 데이타02},
{데이타10, 데이타11, 데이타12},
{데이타20, 데이타21, 데이타22}
};
자료형 배열명[3][3] = {
데이타00, 데이타01, 데이타02,
데이타10, 데이타11, 데이타12,
데이타20, 데이타21, 데이타22
};
자료형 배열명[][3] = {
{데이타00, 데이타01, 데이타02},
{데이타10, 데이타11, 데이타12},
{데이타20, 데이타21, 데이타22}
};
#include <iostream> #include <stdlib.h> /* srand, rand */ #include <time.h> /* time */ using namespace std; class Array { public: Array() { Start(); } void Start() { // int 배열 생성 int iArray[3][4] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } }; cout << "[int 배열 출력]============================" << endl; iArray[2][2] = 70; // 배열의 값과 주소를 출력함 cout << "iArray : " << iArray << endl; cout << "iArray[0] : " << iArray[0] << endl; cout << "iArray[1] : " << iArray[1] << endl; cout << "iArray[2] : " << iArray[2] << endl; cout << "iArray[3] : " << iArray[3] << endl; cout << "(iArray[0] + 0) : " << (iArray[0] + 0) << endl; cout << "(iArray[0] + 1) : " << (iArray[0] + 1) << endl; cout << "*(iArray[1] + 1) : " << *(iArray[1] + 2) << endl; cout << "*(*(iArray + 1) + 2) : " << *(*(iArray + 1) + 2) << endl; cout << "iArray[1][2] : " << iArray[1][2] << endl; PointerPrintArray(iArray); RefPrintArray(iArray); } // 포인터 배열 매개변수 사용 void PointerPrintArray(int(*piArray)[4]) // 2차원 배열의 참조 (자료형* 배열명[열크기]) { cout << "[int 배열 출력]============================" << endl; for (int i = 0; i < 3; i++) { // 1차원 반복문은 1차원 배열을 순회함 for (int j = 0; j < 4; j++) // 2차원 반복문은 2차원 배열을 순회함 cout << "piArray[" << i << "][" << j << "] : " << piArray[i][j] << endl; } } // 포인터 배열 매개변수 사용 void RefPrintArray(int refiArray[][4]) // 2차원 배열의 참조 (자료형 배열명[][열크기]) { cout << "[int 배열 출력]============================" << endl; for (int i = 0; i < 3; i++) { // 1차원 반복문은 1차원 배열을 순회함 for (int j = 0; j < 4; j++) // 2차원 반복문은 2차원 배열을 순회함 cout << "refiArray[" << i << "][" << j << "] : " << refiArray[i][j] << endl; } } }; void main() { Array* object = new Array(); delete object; }
2차원 배열과 2차원 반복문, switch문에 대한 예제
switch문은 if문과 같은 조건문임
[문법]
switch (정수식) {
case 기준정수값:
실행내용;
break;
case 기준정수값:
실행내용;
break;
...
default:
실행내용;
break;
}
* 모든 switch문은 if문으로 변경이 가능함
* 모든 if문은 switch문으로 변경할 수 있지는 않음
switch문으로 변경 가능한 if문
if (정수형변수또는식 == 기준정수값) ... elseif 동일
#include <iostream> #include <stdlib.h> #include <string> #include <time.h> #include <Windows.h> using namespace std; //몬스터 젠 함수 void MonsterGen5(int type) { // type 1,2 인간형 // type 3,4 언데드형 switch (type) { case 1: case 2: // if (type == 1 || type == 2) { cout << "인간형 몬스터 타입이 생성됩니다." << endl; break; case 3: case 4: // else if (type == 3 || type == 4) { cout << "언데드형 몬스터 타입이 생성됩니다." << endl; break; } // 배열의 값의 의한 출력 switch (type) // if (type { case 1: // if (type == 1) { cout << "멀록 몬스터가 생성되었습니다." << endl; break; // } case 2: // else if (type == 2) { cout << "오우거 몬스터가 생성되었습니다." << endl; break; // } case 3: cout << "언데드 기사 몬스터가 생성되었습니다." << endl; break; default: // else { cout << "보스 몬스터가 생성되었습니다." << endl; break; // } } } void main() { // 상수형으로 변수 선언 const int WAVE_SIZE = 3; const int MONSTER_COUNT = 4; // 자료형 배열명[행갯수][열갯수] int monsterGenType[WAVE_SIZE][MONSTER_COUNT] = { // 몬스터 타입을 미리 배열에 넣어둠 { 1, 1, 2, 2 }, // 1웨이브 몬스터 생성 타입 { 2, 2, 3, 3 }, // 2웨이브 몬스터 생성 타입 { 3, 3, 3, 4 } // 3웨이브 몬스터 생성 타입 }; // 1차원 반복문은 행배열의 반복 담당 for (int i = 0; i < WAVE_SIZE; i++) { cout << i + 1 << "번째 웨이브가 시작되었습니다..." << endl; // 2차원 반복문은 열배열의 반복을 담당 for (int j = 0; j < MONSTER_COUNT; j++) { Sleep(2000); // 2초마다 //cout << monsterGenType[i][j] << "타입의 몬스터가 생성되었습니다." << endl; MonsterGen5(monsterGenType[i][j]); } for (int k = 0; k < 3; k++) { Sleep(500); cout << "경고!! "; } cout << endl; } }
댓글 0개
| 엮인글 0개
285개(7/15페이지)
번호 | 제목 | 글쓴이 | 조회 | 날짜 |
---|---|---|---|---|
165 | [C#] 네임스페이스 (namespace) | 푸딩뱃살 | 3406 | 2015.11.14 17:34 |
164 | [C#] 인터페이스 (Interface) | 푸딩뱃살 | 2196 | 2015.11.13 18:17 |
163 | [C/C++] Static(정적) 멤버 변수, 메소드 | 푸딩뱃살 | 2474 | 2015.11.13 10:32 |
162 | [C/C++] 추상 클래스 - 오버라이드 / 업/다운캐스팅(형변환) / virtual(가상함수) | 푸딩뱃살 | 4726 | 2015.11.12 02:00 |
161 | [C/C++] 메소드 오버라이드 | 푸딩뱃살 | 1993 | 2015.11.12 01:51 |
160 | [C#] 상속 (with Unity) | 푸딩뱃살 | 5454 | 2015.11.10 16:25 |
159 | [C/C++] 클래스 상속 | 푸딩뱃살 | 2246 | 2015.11.10 14:08 |
158 | [C/C++] 객체 활용 | 푸딩뱃살 | 2472 | 2015.11.09 21:28 |
157 | [C#] C# 객체 클래스 | 푸딩뱃살 | 3568 | 2015.11.08 15:51 |
156 | [C/C++] 생성자 / 소멸자 / 오버로드 | 푸딩뱃살 | 2203 | 2015.11.07 01:23 |
155 | [C/C++] 클래스 선언/정의, 객체 생성 | 푸딩뱃살 | 3568 | 2015.11.06 14:05 |
154 | [C/C++] 로또 프로그램 | 푸딩뱃살 | 2285 | 2015.11.06 12:00 |
153 | [C/C++] 2차원 동적 객체 배열 활용 | 푸딩뱃살 | 3650 | 2015.11.06 00:47 |
>> | [C/C++] 2차원 배열 | 푸딩뱃살 | 2404 | 2015.11.06 00:30 |
151 | [C/C++] 2차원 포인터 | 푸딩뱃살 | 2053 | 2015.11.06 00:26 |
150 | [C/C++] 동적할당 | 푸딩뱃살 | 1806 | 2015.11.05 11:23 |
149 | [C/C++] 당신의 프로그래밍에 디버깅 더하기 : Visual C++ 디버깅 기초에서 고급까지 | 푸딩뱃살 | 1453 | 2015.11.05 11:20 |
148 | [C/C++] 포인터와 배열의 이해 | 푸딩뱃살 | 2014 | 2015.11.04 23:54 |
147 | [C/C++] 포인터 | 푸딩뱃살 | 2195 | 2015.11.04 15:14 |
146 | [C/C++] 일반 함수와 메소드간의 차이 | 푸딩뱃살 | 2432 | 2015.11.03 23:38 |