코딩 이야기

[C언어] 2차원 배열로 영화관 예약 시스템을 구현해보자

고주망고 2021. 7. 29. 20:00

목표: 2차원 배열로 영화관 티켓 구매 시스템을 구현해보자

조건1: 자리가 있는지 확인하는 함수를 만들어라

조건2: 현재 자리의 상태 호출하는 함수

조건3: 2차원 배열을 전역변수로 만들어 사용하여라

 

저같은 경우는 2차원 배열의 값이 0이면 예약이 안된상태 1이면 예약이 된상태로 만들어 출력을 해보았습니다.


D3을 선택한 경우

 

A4를 선택한 경우

 

B1을 선택한 경우
D8을 선택한 경우

 


답안:

#include <stdio.h>

int check(char, int);//자리가 있는지 확인을 해주는 함수
void seat();//현재 자리의 상태 호출하는 함수
int book[6][10] = { 0 };

void main(void) {
char row;
int column;

printf("\t\t<2차원 배열 영화관에 오신것을 환영합니다>\n\n");
printf("현재 이용 가능한 자리입니다:\n");
seat(); //자리 현황을 불러 오는 함수

while (1) {
printf("행을 입력해주세요:");
row = getchar();
printf("열을 입력해주세요:");
scanf_s("%d", &column);

if (check(row, column) == 1) {
seat(); //예약되었는지 확인
printf("당신의 자리는 %c행 %d열 입니다\n", row, column);
break;
}
}

}


int check(char row, int column) {
if (book[row - 65][column-1] == 0) {//아스키코드 A=65, B=66 .. 인것을 이용함
printf("예약이 완료되었습니다");
book[row - 65][column-1] = 1;
return 1;
}
else{
printf("이미 예약된 자리입니다\n");
printf("다른 자리를 선택해주세요");
return 0;
}
}

void seat() {
printf("\n      1        2        3        4        5        6        7        8        9        10\n");
//\t을 사용하였는데.. 줄 간격이 안맞아서 이 방법밖에 생각이 안났는데 혹시 저 좋은 방법이 있으신분은.. 댓글로 남겨주시면 감사하겠습니다..
for (int i = 0; i < 6; i++) {
printf("%c ", 65 + i);
for (int j = 0; j < 10; j++) {
if (book[i][j] == 0) {
printf(" 이용가능");
}
else if (book[i][j] == 1) {
printf(" 예약완료");
}
}
printf("\n");
}

}