#pragma warning(disable:4996)

#define _CRT_SECURE_NO_WARNINGS

#include "stdafx.h"

#define SIZE 10




//입력 버퍼에 있는 값을 초기화시켜준다.

//입력 버퍼에 있는 \n값은 초기화 되지않아서 함수를 이용해 초기화 한다.

void Clear_Stdin()

{

int ch;

while ((ch = getchar()) != EOF&&ch != '\n')

{


}

}

//EOF 파일의 끝을 뜻함.




int main()

{

char seat[SIZE][SIZE];

char select = 0;

char width = 0;

int length = 0;



printf("  -------------------------------\n");

printf(" |   극장 좌석 예매 프로그램     |\n");

printf("  -------------------------------\n");

printf("  |                             |\n");

printf("  |   --------스크린---------   |\n");

printf("  |                             |\n");



//문자 "O"로 초기화 작업

for (int i = 0; i < 10; i++) {

for (int j = 0; j < 10; j++)

seat[i][j] = 'O';

}


//극장 좌석표 출력

printf("  |     ");

for (int i = 0; i < 10; i++)

printf("%c ", i + 65);

printf("    |");

printf("\n");

printf("  |    --------------------     |\n");

for (int i = 0; i < 10; i++)

{

printf("  ");

printf("| %2d| ", i + 1);

for (int j = 0; j < 10; j++)

{

printf("%c ", seat[i][j]);

}

printf("    |");

printf("\n");

}



printf("   -----------------------------\n");

printf("   -----------------------------\n");


while (select != 'X') //X(종료) 입력전까지 반복수행

{

printf("\n");

printf("   ex)------------------- \n   |    예약    => +A2   |\n   |  예약 취소 => -A2   |\n");

printf("    ---------------------");

printf("\n\n");

printf("   메뉴)---------------------- \n   |  현재 좌석현황 출력 : V  |\n   |  예매 종료 : X           |\n");

printf("    --------------------------\n\n");

printf("=> ");

scanf(" %c", &select);

printf("\n");


//예약

if (select == '+') {

scanf("%c%d", &width, &length);

if (width - 65 >= 0 && width - 65 <= 9 && length - 1 >= 0 && length - 1 <= 10) {

if (seat[length - 1][width - 65] != 'X') {

seat[length - 1][width - 65] = 'X';

printf("좌석이 예약되었습니다.\n\n");

}

else

{

printf("이미 예약된 좌석입니다.");

}

}

else

{

printf("Error!!. \n\n");

}

}


//예약 취소

else if (select == '-') 

{

scanf("%c%d", &width, &length);

if (width - 65 >= 0 && width - 65 <= 9 && length - 1 >= 0 && length - 1 <= 10) {

if (seat[length - 1][width - 65] = 'X') {

seat[length - 1][width - 65] = 'O';

printf("좌석이 취소되었습니다.\n\n");

}

else {

printf("좌석을 다시한번 확인하십시오.");

}

}

else {

printf("Error!! \n\n");

}

}


//현재 예약 현황 출력

else if (select == 'V') {

printf("  -------------------------------\n");

printf("  |                             |\n");

printf("  |   --------스크린---------   |\n");

printf("  |                             |\n");

printf("  |     ");

for (int i = 0; i < 10; i++)

printf("%c ", i + 65);

printf("    |");

printf("\n");

printf("  |    --------------------     |\n");

for (int i = 0; i < 10; i++)

{

printf("  ");

printf("| %2d| ", i + 1);

for (int j = 0; j < 10; j++)

{

printf("%c ", seat[i][j]);

}

printf("    |");

printf("\n");

}

printf("  -------------------------------\n");

}



Clear_Stdin(); //입력버퍼에 있는 내가 이전에 입력했던 값을 지워줌 => 이전값을 초기화함

//scanf 변수를 하나만 넣을경우 scanf가 받는 변수는 원래 하난데 2개입력시 하나를 입력버퍼에 담아둔다.  =>  버퍼 오버플로우 공격의 원리

//입력버퍼에 \n 은 남아서 한번더 반복이 된다.

//특수문자를 대량으로 입력시 while문의 반복을 막기위해서 함수를 넣는다.



}







printf("\n이용해 주셔서 감사합니다.\n\n");


return 0;

}

+ Recent posts