Studies/C++
04 c++ 배열
쿠뱃봉
2022. 1. 8. 16:41
1.배열의 개념
(1)코드
#include<iostream>
using namespace std;
int main() {
const int SIZE = 5;
int arr[SIZE] = { 10,20,30,40,50 };
cout << arr << endl;
cout << arr[0] << endl;
cout << &arr[0] << endl;
cout << sizeof(arr) << endl;
cout << sizeof(arr[0]) << endl;
for (int x : arr) {
cout << x << endl;
}
cout << sizeof(arr) / sizeof(arr[0]) << endl;
return 0;
}
(2)실행결과
(3)배열 개념
배열의 주소는 상수다. 변경할 수 없다.
배열 이름의 주소는 배열의 첫번째 방의 주소이다.
배열의 이름은 포인터 상수다.
int* pnum;
포인터변수의 size는 4byte
int num[5];
num => #100 [1,2,3,4,5]
num은 100번지(주소)라는 상수
int* pnum=num;
num+0==&num[0]
num+1==&num[1]
*(num+1)==num[1]
*(pnum+1)==pnum[1]
2.학생 성적 평균 구하기
(1)코드
#include<iostream>
using namespace std;
int main() {
const int SIZE = 5;
int arr[SIZE];
int sum = 0;
for (int i = 0; i < SIZE; i++) {
cout << "학생 정보 입력 : ";
cin >> arr[i];
sum += arr[i];
}
cout << sum / SIZE << endl;
return 0;
}
(2)실행결과
3.0~9 난수발생 1000번/ 난수 몇개씩 발생했는지
(1)코드
#include<iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
const int SIZE = 10;
srand((unsigned)time(NULL));
int arr[SIZE] = {0,};
//for (int i = 0; i < 10;i++) {
// arr[i] = 0;
//}
for (int i = 0; i < 1000; i++) {
int num = rand() % 10;
arr[num] += 1;
}
for (int i = 0; i < 10;i++) {
cout << i << "\t" << arr[i] << endl;
}
}
(2)실행결과
4. 5명 성적 히스토그램
(1)코드
#include<iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
const int SIZE = 5;
int count[SIZE] = { 10,5,8,6,2 };
for (int i = 0; i < SIZE; i++) {
cout << "학생 " << i + 1 << " : ";
for (int j = 0; j < count[i]; j++) {
cout << "*";
}
cout << endl;
}
return 0;
}
(2)실행결과
5. 도형 세 개 10*10 배열에 하나씩 랜덤으로 넣기
(1)코드
#include<iostream>
#include<string>
#include<ctime>
using namespace std;
int main() {
const int ROW = 10;
const int COL = 10;
int arr[ROW][COL] = { 0, };
string item[4] = { "□","★","※","●" };
srand((unsigned)time(NULL));
for (int i = 1; i <= 3; i++) {
int randRow = rand() % 10;
int randCol = rand() % 10;
if (arr[randRow][randCol] ==0)
arr[randRow][randCol] = i;
else
i--;
}
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
switch (arr[i][j]) {
case 0:
cout << item[0]; break;
case 1:
cout << item[1]; break;
case 2:
cout << item[2]; break;
case 3:
cout << item[3]; break;
}
}
cout << endl;
}
}
(2)실행결과
6. 4*6 좌석 예약
A행 1열부터 시작해서 F행 6열로 끝나고
A1 처럼 입력을 받음
(1)코드
#include<iostream>
#include<string>
#include<ctime>
using namespace std;
int main() {
const int ROW = 6;
const int COL = 4;
int arr[ROW][COL] = { 0, };
string item[2] = { "□","●" };
while (true) {
//system("cls");
//좌석 현황 출력
for (int i = 0; i < ROW; i++) {
cout << char(i + 'A') << " : ";
for (int j = 0; j < COL; j++) {
switch (arr[i][j]) {
case 0:
cout << item[0]; break;
case 1:
cout << item[1]; break;
}
}
cout << endl;
}
//좌석 입력
char x, y;
cin >> x >> y;
if (arr[int(x - 'A')][int(y - '1')] == 0) {
arr[int(x - 'A')][int(y - '1')] = 1;
cout << "예약 완료" << endl;
}
else {
cout << "이미 예약된 좌석입니다." << endl;
}
//system("pause");
}
return 0;
}
(2)실행결과