-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path9주차 53번.txt
77 lines (65 loc) · 2.33 KB
/
9주차 53번.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <stdio.h>
#define MAX 10
#define CURRENT_SEATS "current seats: "
#define INPUT "how many seats you need? "
#define OUTPUT_OK "reservation completed: "
#define OUTPUT_ERR "not enough seats\n"
#define SOLDOUT "soldout\n"
/*
* 현재 좌석의 상태를 출력하는 함수
* 배열 출력 전에 CURRENT_SEATS와 열린 대괄호 "["를 출력한다.
* 배열 출력 후 닫힌 대괄호 "]"와 newline 문자를 출력한다.
* 인자로 받은 배열의 원소가 0이면 빈자리, 1이면 예약된 자리를 의미함
* 정수로 받아 결과를 문자로 출력하기 위해 아스키 값을 출력해봅시다.
*O 79 X 88
* @param const int seats[] 좌석의 상태가 들어있는 배열
*/
void print_cur_seat(const int seats[]);
int main(void) {
// 예약된 좌석수를 관리하기 위한 변수를 선언합니다.
int a; int b;
// 좌석별 예약여부를 관리하기 위한 배열 변수를 선언합니다.
int seats[MAX]={0,0,0,0,0,0,0,0,0,0};
// 예약된 좌석수가 MAX보다 작은 동안 반복
for(;a<MAX;){
// print_cur_seat() 함수를 이용해 현재 좌석을 출력합니다.
print_cur_seat(seats);
// 입력 안내문구를 출력하고 사용자로부터 예약할 좌석 수를 입력을 받습니다.
printf(INPUT);
scanf("%d",&b);
// 좌석을 예약했을 때, 최대 좌석수를 초과한다면
if(b>10-a){
printf(OUTPUT_ERR);
}
// OUTPUT_ERR을 출력합니다.
// 최대 좌석수를 초과하지 않는다면
else if(b<=10-a){
// OUTPUT_OK를 출력합니다.
printf(OUTPUT_OK);
// 배열의 해당 위치들을 1로 설정하고 인덱스를 출력합니다.
for(int i=0; i<b; i++){
seats[a+(i)] = 1;
printf("%d ",a+(i+1));
}
// 기존에 예약된 좌석수에 이번에 예약한 좌석수를 추가합니다.
a=a+b;
// newline을 출력합니다.
printf("\n");
}
// 반복문을 빠져나왔다면 SOLDOUT을 출력합니다.
}
printf(SOLDOUT);
return 0;
}
void print_cur_seat(const int seats[]){
printf(CURRENT_SEATS"[ ");
for(int i=0; i<MAX; i++){
if(seats[i]==1){
printf("%c ",88);
}
else if(seats[i]==0){
printf("%c ",79);
}
}
printf("]\n");
}