[c언어] 자리예약 시스템

2020. 12. 21. 14:25Computer Science/C

 

기차표 좌석을 예매하는 프로그램을 작성한다. 

좌석은 모두 10개라고 가정하고, 예매할 좌석수를 입력받아 빈 자리를 앞에서부터 차례로 할당한다.

0은 예매 가능, 1은 이미 예약되었음을 의미한다. 

더 이상 예매할 자리가 남아있지 않으면 프로그램을 종료한다.

* 남은 좌석보다 많은 자리를 예약하려고 할 때 예약을 할 수 없는 인원수를 출력한다.

 

#define SIZE 10
#include <stdio.h>

int askReservation(void);
void printSeats(int s[], int size);
void processReservation(int s[], int size, int seatNumber);

int main(void)
{
    int number;
    int seats[SIZE] = { 0 };

    printf("******* 좌석 예약 시스템 ********\n");
    printSeats(seats, SIZE);

    while (seats[SIZE - 1] == 0)
    {
        number = askReservation();
        processReservation(seats, SIZE, number);
        printSeats(seats, SIZE);

        while (getchar() != '\n');
    }
}

int askReservation()
{
    int num;

    printf("\n좌석을 예약하시겠습니까? (몇명) ");
    scanf("%d", &num);

    return num;
}
void processReservation(int s[], int size, int num)
{
    int i, j;
    for (i = 0;i < SIZE;i++)
        if (s[i] == 0)
        {
            if (i + num > size) {
                printf(">>> %d명은 예약 안됨 ", i + num - size);
                for (j = i;j < size;j++)
                    s[j] = 1;
            }
            else {
                for (j = i;j < i + num;j++)
                    s[j] = 1;
            }
            break;
        }

    printf("\n");
}
void printSeats(int s[], int size)
{
    int i;
    
    printf("---------------------\n");
    printf(" 1 2 3 4 5 6 7 8 9 10\n");
    printf("---------------------\n");
    for (i = 0;i < SIZE;i++)
        printf("%2d", s[i]);
    printf("\n");
}

 

결과