전공/C

[C 언어] 1차원 배열 - 기차표 예매

BBungyaLog 2022. 9. 22. 22:07

# 실행창

 

# 코드

#define SIZE 10 
#include <stdio.h> 

int askReservation();
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_s("%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명은 예약 불가\n", 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");
}