하노이탑은 여러 프로그래머들이 재귀함수를 공부할때 주로 찾는 구조이다. 하지만 하노이탑을 게임으로 만들면 재귀는 버리고 구조체 배열을 빠삭하게 알아야한다.
기본적으로 룰은 이렇다.
1) 0인 원반은 움직일 수 없다.
2) 같은 자리로 이동은 불가능하다 ex)1번 원반을 고르고 1번에 착지
3) 하노이탑의 규칙에 위배되서는 안된다.
- 한 번에 하나의 원판만 옮길 수 있다.
- 큰 원판이 작은 원판 위에 있어서는 안 된다.
4) 다시하기를 할 경우 초기화된다.
'프로그래밍 > C++언어' 카테고리의 다른 글
콘솔게임(오목)만들기. (5) | 2016.06.07 |
---|---|
[C++언어]더미노드가 있는 단순연결리스트로 주소록 만들기 (0) | 2016.04.15 |
주소록 만들기 문제
(1)삽입)회원번호,이름,휴대전화 번호 입력하도록
(2)정렬)회원번호 기준으로 오름차순으로 정렬
(3)삭제)무슨 번호를 삭제할지 묻고,사용자 입력 정보를 삭제
삭제는 회원번호 이름 휴대전화를 전부 0으로 만든다.
(4)출력)정렬한 후 출력할 경우, 정렬한 순으로 정보 출력
아닌 경우 그대로 출력(회원 번호, 이름, 휴대전화 번호 출력)
struct와 enum 꼭 이용.
1번 ※※※ ***-****-****
2번 ※※※ ***-****-****
3번 ※※※ ***-****-****
4번 ※※※ ***-****-****
5번 ※※※ ***-****-****
6번 ※※※ ***-****-****
8번 ※※※ ***-****-****
9번 ※※※ ***-****-****
//회원 번호 0번은 입력 불가능 하도록.
//출력 때 회원번호 0번은 출력되지 않도록.
----------------------------------------------------------------------------------------------------------
이번 문제는 약간 머리를 써야하는 문제이다.
기본적으로 배열은 인덱스가 전부 연결되어있는 완성된 형태이다.
이러한 배열의 성질때문에 중간의 어떤 인덱스를 지우는것은 불가능하다. (이런것이 가능한 것은 리스트이다.)
예를들어 1 2 3 4 5 이 순서대로 저장되어 있다고 치자. 이때 2를 삭제하려고 한다. 그러면
1 0 3 4 5 이런 식으로 되있을것이다.
필자가 생각하는 삭제 및 출력방식은 총 2가지이다.
1번째는 필자가 만든 방식으로 삭제 할 때 0으로 만들고 그 0을 뒤로 밀어버리는 방식이다. 그리고 출력할때도 회원번호가 0인 것이 나올때까지 출력하는 것이다.
예를 들어 1 2 3 4 5 0 0 0 ... 이런식으로 되있고 2를 삭제하면 1 0 3 4 5 0 0 0 ,,, 이런식으로 만든 후 1 3 4 5 0 0 0 0 ... 이렇게 만드는 것이다. 또한 출력때도 1 3 4 5 까지만 출력하고 반복문을 탈출한다.
2번째는 그냥 0으로 삭제하고 출력할때 회원번호가 0인 것은 거르는 형식이다.
예를 들면 1 2 3 4 5 0 0 0 ... 이런식으로 되있고 2를 삭제하면 1 0 3 4 5 0 0 0... 이런식으로 놔두고 출력할때 회원번호가 0이면 출력을 안 하게 조건문을 만드는 것이다.
필자는 가급적 1번째를 추천한다. 왜냐하면 1번째는 구조체에 데이터가 있는 부분까지만 반복문이 돌고 2번째는 구조체의 끝부분까지 즉, 회원번호를 입력 안한 곳까지도 확인하기 때문에 메모리 낭비이다. 사실상 별 차이 없기는 하지만 자료구조를 배우게 되면 이해 할 것이다.
'프로그래밍 > C언어' 카테고리의 다른 글
[C언어] 우주선 (0) | 2016.06.07 |
---|---|
[C언어]배열을 이용하여 맵 만들기. (0) | 2016.06.07 |
[C언어]배열과 문자열을 이용한 달팽이(나선형)구조 만들기 (0) | 2016.04.15 |
[C언어]배열을 이용한 달팽이(나선형)구조 만들기 (0) | 2016.04.15 |
[C언어]반복문을 이용하여 풍차 만들기 (0) | 2016.04.15 |
저번 포스팅때는 너무나도 잘 알려진 구조로 만들어서 약간 재미없었을 것이다. 그래서 달팽이(나선형)구조를 이용하면서 새로운 구조를 생각해 봤다.
이번에는 문자열을 받아서 그 길이만큼 나선형을 만들고 문자는 계속 입력된값이 나오도록 만드는 것이다. 설명이 어려워서 실행창으로 설명을 대체하겠다.
조건은 100자이내의 문자열을 입력했을때 실행된다.
'프로그래밍 > C언어' 카테고리의 다른 글
[C언어]배열을 이용하여 맵 만들기. (0) | 2016.06.07 |
---|---|
[C언어]구조체와 열거형을 이용해 주소록 만들기 (0) | 2016.04.15 |
[C언어]배열을 이용한 달팽이(나선형)구조 만들기 (0) | 2016.04.15 |
[C언어]반복문을 이용하여 풍차 만들기 (0) | 2016.04.15 |
[C언어]반복문을 이용하여 마름모(다이아몬드) 만들기 (0) | 2016.04.15 |