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
반응형
'Solution > C언어 콘서트' 카테고리의 다른 글
C언어 콘서트 - 제9장: 포인터 연습문제 (2/8) (0) | 2018.05.09 |
---|---|
C언어 콘서트 - 제9장: 포인터 연습문제 (1/8) (0) | 2018.05.09 |
C언어 콘서트 - 제8장: 배열 연습문제 (4/5) (0) | 2018.03.11 |
C언어 콘서트 - 제8장: 배열 연습문제 (3/5) (2) | 2018.03.07 |
C언어 콘서트 - 제8장: 배열 연습문제 (2/5) (4) | 2015.01.28 |