본문으로 바로가기
728x90
반응형

Programming


8. 배열을 이용하여 간단한 극장 예약 시스템을 작성하여보자. 매우 작은 극장이라서 좌석이 10개밖에 안 된다. 사용자가 예약을 하려고 하면 먼저 좌석 배치표를 보여준다. 즉, 예약이 끝난 좌석은 1로, 예약이 안 된 좌석은 0으로 나타낸다.

좌석을  예약하시겠습니까? (y 또는 n) y

현재의예약 상태는  다음과 같습니다.

-----------------------------------------------

1 2 3 4 5 6 7 8 9 10

-----------------------------------------------

0 0 0 0 0 1 1 1 0  0

몇 번째 좌석을 예약하시겠습니까? 1

예약되었습니다.

-----------------------------------------------

1 2 3 4 5 6 7 8 9 10

-----------------------------------------------

1 0 0 0 0 1 1 1 0  0

좌석을 예약하시겠습니까? (y 또는 n) n

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include "stdafx.h"
#include <stdlib.h>
 
 
int seat[10= { 0 };
 
void seat_now()
{
    printf("--------------------------------------\n");
    for (int i = 0; i < 10; i++)
        printf("%d ", i + 1);
    printf("\n--------------------------------------\n");
    for (int i = 0; i < 10; i++)
        printf("%d ", seat[i]);
    printf("\n");
}
 
int main()
{
    char ans='a';
    int num = 0;
    while (true)
    {
        printf("좌석을 예약하시겠습니까? (y 또는 n)");
        ans = _gettch();
        printf("%c\n",ans);
 
        if (ans == 'y')
        {
            printf("현재의 예약 상태는 다음과 같습니다.\n");
            seat_now();
 
            printf("\n몇번째 좌석을 예약하시곘습니까?");
            scanf_s("%d"&num);
            while (true)
            {
                if (num >= 1 && num <= 10)
                {
                    if (seat[num - 1== 0)
                    {
                        seat[num - 1= 1;
                        printf("예약되었습니다.\n");
                        seat_now();
                    }
                    else
                        printf("이미 예약된 좌석입니다.\n");
                    break;
                }    
                else 
                {
                    printf("올바른 숫자를 입력해주세요.");
                    scanf_s("%d"&num);
                }
            }
        }
        else if(ans=='n')
            break;
 
    }
 
    printf("\n");
    system("pause");
    return 0;
}
 
cs


9. 2차원 배열을 이용하여 tic-tac-toe 게임 프로그램을 작성하여보자. tic-tac-toe 게임은 수평이나 수직, 대각선으로 같은  돌이 놓이면 승리하는 게임이다. tic-tac-toe 게임 보드를 표현하는 데 3X3의 2차원 배열을 이용한다. 2차원 배열의 원소가 0이면 아직 놓이지 않은 것이고, 1이면 O를, 2이면 X를 표시한다고 가정한다.

 

o

 

x

o

 

 

o

 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include "stdafx.h"
#include <stdlib.h>
int board[3][3= { 0 };
int turn = 0;
int order = 1;
int i, j;
void refresh()
{
    system("cls");
    order = (turn % 2+1;
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
        {
            printf(" %c ", (board[i][j]) == 0 ? '-' : (board[i][j] == 1 ? 'o' : 'x'));
        }
        printf("\n");
    }
}
void key()
{
    printf("키패드의 숫자위치 기준으로 입력해주세요\n");
    char pos = _gettch();
    
    while (pos < '1' || pos > '9')
    {
        printf("올바른 숫자를 입력해주세요(1~9)\n");
        pos = _gettch();
        if (pos >= '1' && pos <= '9')
            break;
    }
    if (board[2-(pos - 49/ 3][(pos - 49) % 3== 0)
    {
        board[2-(pos - 49/ 3][(pos - 49) % 3= order;
    }
    else
    {
        printf("이미 입력된 자리입니다\n");
        key();
    }
}
bool check()
{
    if (turn > 4)
    {
        for (i = 0; i < 3; i++)
        {
            for (j = 0; j < 3; j++)
            {
                if (board[i][j] == order)
                    continue;
                else
                    break;
            }
            if (j == 3)return false;
        }
        for (j = 0; j < 3; j++)
        {
            for (i = 0; i < 3; i++)
            {
                if (board[i][j] == order)
                    continue;
                else
                    break;
            }
            if (i == 3)return false;
        }
        if (board[0][0== board[1][1&& board[1][1== board[2][2])
            return false;
        if (board[2][0== board[1][1&& board[1][1== board[2][0])
            return false;
    }
    
    return true;
}
int main()
{
    refresh();
    while (check())
    {
        refresh();
        printf("%c 의 차례입니다\n", turn % 2 == 0 ? 'o' : 'x');
        key();
        turn++;
    }
    refresh();
    printf("%c의 승리입니다!"!(turn%2 ==0) ? 'o' : 'x');
    printf("\n");
    system("pause");
    return 0;
}
 
cs


728x90
반응형