c언어 승패판단 프로그램 작성하기
- 콩지님의 일상/c++
- 2014. 6. 23.
안녕하세요..^^* 오늘은 재귀호출을 이용해서 간단한 승패판단 프로그램을 짜 보도록 하겠습니다. 여기서 규칙을 정해야 되겠죠.
규칙 1 사과를 1개에서 3개를 제거할 수 있다. 무조건 제거해야 된다.
규칙 2 사과가 0개가 되어서 돌려주면 지는 것이다.
자 규칙 1과 2를 보고 여기서 보도록 하죠. 0이면 내가 사과를 0개를 가지고 있으니까. 안되는 것이죠. 그럼 사과를 4개를 가진다고 해 보겠습니다. 그렇다면 4개에서 1개를 남한테 주면 3개가 남죠. 그럼 다른 사람이 3개를 돌려주면 지고 2개를 남한테 주면 2개를 가진 사람이 2개를 줘 버리면 0개이고 3개를 다 줘버리면 1개가 남으니 상대가 1개를 돌려주면 그냥 지므로 무조건 집니다.
그렇다면 5개는 어떨까요? 내가 일단 1개를 주면 4개겠죠? 그럼 상대는 1개를 주던 2개를 주던 3개를 주던 무조건 지는 게임입니다. 이 간단한 규칙의 게임을 한번 프로그래밍 해 보겠습니다.
여기서 가장 핵심적인 부분은 재귀호출 부분 즉 win 함수의 정의부분인데요. 0일때는 무조건 지니까 false값을 리턴해야되겠죠. 그러므로 0 1일때는 1개를 주면 적은 1개를 2개일때도 1개를 돌려주면 상대방은 무조건 1개를 제거해야되므로 이기겠죠. 4일때를 봅시다. 내가 1개를 제거 했을때와 2개를 제거했을때 3개를 제거했을 때 적에게는 다 참을 즉 적에게 이길 수 있는 패만 주었죠? 그러니까 어느 하나는 지는 패를 줘야 합니다. 그래서 소스코드를 저렇게 코딩 했습니다.
생각을 해 보면 간단한 소스이지만 처음 하시는 분들은 아주 생소한 소스코드가 될 수 있습니다. 기본을 튼튼히 하여도 많은 생각이 없다면 절대 프로그램은 쉽게 짤 수 없는 것이죠.^^* 프로그래밍 저도 배우면서 많이 어렵네요..ㅠㅠ 그럼 오늘은 여기서 마치도록 하겠습니다.^^*
'콩지님의 일상 > c++' 카테고리의 다른 글
C언어 오름차순으로 정렬하기 (4) | 2014.06.19 |
---|---|
배열 값을 바꾸는 프로그램 짜기 (0) | 2014.06.14 |
배열 검색하는 프로그램 짜기 (0) | 2014.06.10 |
배열 인덱스 출력하는 프로그램 작성하기 (0) | 2014.06.08 |
c언어 연산자 알아보기 (0) | 2014.05.09 |