[이산수학] 이산수학을 이용한 매직카드 게임[c언어로 표현]
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

[이산수학] 이산수학을 이용한 매직카드 게임[c언어로 표현]에 대한 보고서 자료입니다.

목차

Ⅰ. 매직카드의 구현
Ⅰ-1. 문제 분석
Ⅰ-2. 소스 코드
Ⅰ-3. 입력 데이터
Ⅰ-4. 결 과
Ⅰ-5. 결 론

본문내용

목 차
Ⅰ. 매직카드의 구현
Ⅰ-1. 문제 분석
Ⅰ-2. 소스 코드
Ⅰ-3. 입력 데이터
Ⅰ-4. 결 과
Ⅰ-5. 결 론
Ⅰ-1. 문제 분석
매직카드란
다음과 같이 0부터 7까지 쓰여진 3장의 카드 A, B, C가 있다.
1 3
5 7
2 3
6 7
4 5
6 7
A B C
이제 , 0부터 7사이에 있는 수자 중에 한 숫자를 마음속에 정한다. 카드를 A, B, C 순서대로 한 장씩 보면서 만약 마음속으로 생각한 숫자가 카드에 있으면 YES를, 카드가 없으면 NO를 답한다. 3장의 카드에 대하여 모두 답을 하면 내 마음 속에 있는 숫자가 나타난다. 이것이 마술카드이다. 그런데 내 마음속에 있는 숫자를 어떻게 알아낼까?
이제 내 마음속에 있는 숫자를 어떻게 구하는지를 생각해보자. 먼저 세 장의 카드에 대하여 각각 YES와 NO를 연속하여 누르는 것은 2가지 경우의 수가 연속하여 3번 독립적으로 반복되는 것을 의미하므로, 이 때 나타날 수 있는 경우는 2 × 2 × 2 = 8 가지 이다.
따라서 3번의 YES와 NO의 답변으로 모두 8개의 숫자를 대응시켜 분류할 수 있다. 즉, YES를 숫자 1, NO를 숫자 0으로 표시한다면 다음과 같은 표를 얻을 수 있다.
마음속에 생각한 수
대답
C
B
A
0
0
0
0
1
0
0
1
2
0
1
0
3
0
1
1
4
1
0
0
5
1
0
1
6
1
1
0
7
1
1
1
<3장의 카드를 구성하는 진리표>
만약 마음속에 5를 생각하였다면, 숫자 5는 카드 A와 C에만 나와 있고, 카드 A와 C에만 있는 숫자는 유일하게 5뿐임을 위의 표에서 알수 있다.
이제 위의 표를 간단한 식으로 표현하면
이다. 만약 마음속에 5를 생각하였다면, 숫자 5는 카드 A와 C에만 있으므로 위식에서
따라서 우리가 마음속에 생각하였던 숫자를 바로 계산 할 수 있다.
이것으로부터 이 식을 일반화하면 다양한 응용을 얻을 수 D있다. 즉, n장의 카드를 가지면 2ⁿ개의 숫자를 분류할 수 있는 매직카드를 만들 수 있다.
이 레포트에서 지향하는 매직카드 프로그램
- 수업교재에는 최대 5장의 카드를 선택할 수 있는 프로그 램 소스가 있다. 하지만 이 레포트에서는 선택할 수 있는 카드의 장수를 n개로 늘릴 수 있도록 프로그램을 구현할 것이다.
- 레포트의 두 번째 요구사항은 C를 이용하여 출력되는 카 드를 단순히 숫자만 표시하는 것이 아닌 정말 카드 모양 으로 출력하는 것이다. 필자는 이 부분이 기존의 C만 가 지고는 어렵다고 판단하고 WinAPI등 다른 방법들을 찾아 보아야 할 것이다.
Ⅰ-2. 소스 코드
Ⅰ-2. 소스 코드 - 소스설명
메인함수
- 메인함수에서는 카드안에 숫자존재여부를 저장할 2중배열을 동적할당하여 메모리를 확보하고 반복문과 조건문을 사용하여 숫자존재여부를 판단하여 숫자가 존재하면 1을 저장하고 존재하지 않으면 0을 저장한다. 그리고 카드를 출력하고 원하는 숫자의 존재여부를 판단하는 함수인 card_print함수와 결과를 출력해주는 result_print함수를 호출한다.
card_print함수
카드를 출력하고 원하는 숫자의 존재여부를 판단하는 함수이다.
result_print함수
card_print함수에서 얻어낸 결과를 출력해주는 함수이다.
loading_print함수와 printf_1~6함수
프로그램 시작 시 불러온 헤더파일 window.h에 정의되어 있는 system함수와 sleep함수를 이용하여 로딩화면을 만드는 함수들이다.
Ⅰ-3. 입력 데이터
프로그램 사용 시 사용자가 입력할 수 있는 데이터는 카드의 장수와 원하는 숫자의 존재여부 YES(Y) or NO(N)이다. 수업교재에 소개되어 있는 소스에서는 각각의 카드의 존재하는 숫자들을 배열선언과 동시에 초기화 하였기 때문에 이 부분에 대해서는 입력값이 존재하지 않았지만 이 프로그램에서는 사용자가 입력한 카드의 장수만큼 메모리를 할당하기 때문에 입력값이 필요하다.
Ⅰ-4. 결 과
카드의 장수는 5장으로 하고 원하는 숫자는 10으로 가정한 가운데 프로그램을 실행하겠다.
- 카드의 장수 입력
- 로딩화면
- 첫 번째 숫자존재여부 판단
- 두 번째 숫자존재여부 판단
- 세 번째 숫자존재여부 판단
- 네 번째 숫자존재여부 판단
- 다섯 번째 숫자존재여부 판단
- 최종 결과
Ⅰ-5. 결 론
원래 학기 초의 레포트였으나 당시의 프로그래밍 능력으로는 이 문제를 해결할 엄두도 낼 수 없었다. 하지만 학기동안 노력하여 n장의 카드를 구현하는 데에는 성공하였다. 하지만 레포트에서 두 번째로 제시한 C를 이용하여 좀 더 카드를 카드답게 만드는 것은 결국 구현하지 못했다. 이 부분은 정말 아쉽고 이 과목을 수강한 이후에도 계속해서 연구해보아야 할 부분이라고 생각한다.

추천자료

  • 가격2,300
  • 페이지수11페이지
  • 등록일2013.09.02
  • 저작시기2013.6
  • 파일형식한글(hwp)
  • 자료번호#876862
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니