[c언어] 자리예약 시스템
2020. 12. 21. 14:25ㆍComputer 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");
}
결과
'Computer Science > C' 카테고리의 다른 글
[c언어] 다중집합 (0) | 2020.12.21 |
---|---|
[c언어] 문자열 속 숫자 합 계산 (아스키코드) (0) | 2020.12.21 |
[c언어] 4칙 연산 (switch문) (0) | 2020.12.16 |
[c언어] 배열에서 key 값 찾기 (0) | 2020.12.16 |
[c언어] 단어 점수 계산 (1) | 2020.12.16 |