개요
배열의 개념과 예제를 통한 이해
배열
같은 데이터 타입의 여러 변수를 하나의 묶음으로 나타낸 것
배열은 데이터타입에 대한 동일한 크기로 메모리상에 연속된 공간이 할당된다.
* 배열은 배열명이 메모리의 시작 주소이다.
int studentNumber[10];
- 10개의 int들이 묶인 배열을 선언한다!
n차원 배열
배열이 (개념적으로) 다중으로 구성되어 있는 것
1차원 배열 : int studentNumber[5]; // 5개의 int로 구성
→ 5명의 학생이 있다.
2차원 배열 : int studentNumber[3][5]; // 15개의 int로 구성
→ 3개의 반에 5명의 학생이 있다.
3차원 배열 : int studentNumber[4][3][5]; // 60개의 int로 구성
→ 4개의 학년에 각각 3개의 반이 존재, 각 반에는 5명의 학생이 있다.
int student_nums[3][5] = { {1, 2, 3, 4, 5} ,
{6, 7, 8, 9, 10} ,
{11, 12, 13, 14, 15} };
for (int j = 0; j < 3; j++)
{
for (int i = 0; i < 5; i++)
{
cout << student_nums[j][i] << endl;
}
}
* 다차원 배열이라도 메모리에는 순서대로 저장된다.
cout << student_nums[0][6] << endl; // [1][1]에 해당하는 7이 출력된다.
배열을 활용한 예제
< 조건 > 5턴 안에 A ~ Z 사이의 값을 맞추는 업다운 게임을 만들어라! |
srand(time(NULL));
// 아스키 코드 : A = 65 / Z = 90 / a = 97 / z = 122
int correct = rand() % (90 - 65 + 1) + 65;
int playTime = 1;
int maxChance = 5;
int inputKey;
cout << "총 5번 안에 정답을 맞추시오(대/소문자 구분 없음)..........(A ~ Z)" << endl;
while (true)
{
// 입력
while (true)
{
inputKey = _getch();
if (inputKey >= 97)
{
inputKey -= 32;
}
if (inputKey >= 65 && inputKey <= 90) // a~z까지 입력을 했다면
{
cout << (char)inputKey << " 을(를) 선택하였습니다." << endl;
break; // while문 탈출
}
else
{
cout << "잘못된 값을 입력하였습니다. 다시 입력해 주세요." << endl;
}
}
// 소문자는 -32 해주는걸로 해야하나..
// 승리
if(inputKey == correct)
{
cout << "GameClear! 승리하였습니다. 게임을 종료합니다." << endl;
break;
}
maxChance--;
// 패배
if (maxChance <= 0)
{
cout << "당신은 패배자입니다. 정답은 " << (char)correct << " 입니다." << endl;
cout << "다시 도전 하시겠습니까?..........(y/n)" << endl;
inputKey = _getch();
if (inputKey >= 97)
{
inputKey -= 32;
}
if (inputKey == 89) // y
{
//재도전
playTime++;
maxChance = 5;
correct = rand() % (90 - 65 + 1) + 65;
cout << playTime << "회차 시작!" << endl;
cout << "총 5번 안에 정답을 맞추시오 (범위 : A ~ Z) (대/소문자 구분 없음)" << endl;
}
else // n 또는 그 외
{
// 게임종료
cout << "GameOver...게임을 종료합니다." << endl;
break;
}
}
else
{
// 힌트
if (inputKey < correct)
{
cout << "선택한 알파벳 " << (char)inputKey << " 보다 뒤에 있습니다." << endl;
}
else
{
cout << "선택한 알파벳 " << (char)inputKey << " 보다 앞에 있습니다." << endl;
}
cout << "다시 선택해 주세요. (남은 기회 : " << maxChance << ")" << endl;
}
}
728x90
'Program > C (C++,C#)' 카테고리의 다른 글
[C++] 구조체 (0) | 2022.04.15 |
---|---|
[C++] 콘솔용 탈출게임 (0) | 2022.04.13 |
[C++] 구구단 & 별찍기 (0) | 2022.04.12 |
[C++] 제어문 (0) | 2022.04.12 |
[C++] 난수 (0) | 2022.04.11 |