일단 본삭금
#include <stdio.h> //탑에 몇개의 원판이 있는지 변수int nplates[3]; //어떤 원판이 있는지 보관//탑의 현재 상태를 표시int tower[3][100]; void print_tower() { int i; //tower[][] 내용을 보여준다 A B C for (i = 1; i < 5; i++){ if (i == 1) printf("\nA :"); printf("%d ", tower[0][i]); } for (i = 1; i < 5; i++){ if (i == 1) printf("\nB :"); printf("%d ", tower[1][i]); } for (i = 1; i < 5; i++){ if (i == 1) printf("\nC :"); printf("%d ", tower[2][i]); } // ... printf("\n"); printf("다음 Enter : "); getchar(); //아무키나 누를때까지 대기 fflush(stdin); } //하나의 원판을 이동할 때 마다 전체 탑의 현재 상태를 변경하고 탑의 내용을 표시.void move_one(int n, char from, char to)// n번 원판을 from에서 to로 { //nplates[](원판개수) 와 tower[][] 내용을 수정한다 printf("\n원판 %d을 %c로 옮긴다.\n", n, from, to); tower[to][nplates[to] + 1] = tower[from][nplates[from]]; //from에서 to+1로 값보내기 tower[from][nplates[from]] = 0;//보냈던 값을 지워주기 //from 에서는 제일 위의 원판을 빼고 //to 에서는 제일 끝의 원판을 추가하고 //nplates[]값을 감소/증가 한다. nplates[from] -= 1; nplates[to] += 1; //이동이 발생할 때 마다 print_tower()호출 print_tower(); } //타워내용을 초기화 한다. //start 위치에 n개의 원판(1~n)이 있다.void init_tower(int n, char start) { int i, tower_no; //탑의 번호 A,B,C -> 0,1,2 tower_no = start - 'A'; //tower[][]내용과 nplates[]를 초기화한다. tower[3][100] = {0};// ----------------------------- > 구문오류 nplates[3] = {0};// -------------------------------- > 구문오류 //tower[0][0]~[0][3] = 4,3,2,1 식으로 for (i = 1; i <= n; i++) tower[tower_no][i] = i; //nplates[] 에 원판의 수를 기억시킨다. nplates[tower_no] = 0; } void hanoi_tower(int n, char from, char tmp, char to) { if (n == 1) //제일 위에 있는 1번 원판을 이동 move_one(1, from, to); else { //1~n-1 을 임시 장소에 이동 hanoi_tower(n - 1, from, to, tmp); //제일 밑에 있는 원판을 이동 move_one(n, from, to); //1 ~ n-1 을 임시 장소에서 목적지로 이동 hanoi_tower(n - 1, tmp, from, to); } } void main() { //초기 조건, 1~4원판이 A에 있다. init_tower(4, 'A'); printf("초기상태"); print_tower(); hanoi_tower(4, 'A', 'B', 'C'); }
코드는 이것이구요
하노이타워를 실시간으로 알려주는 프로그램입니다.
어디로 보내고 또 어디로 갔는지..
근데 중간까지는 괜찮았는데 저기 void init_tower(int n, char start) 부분에서 구문오류가 나네요,,
전 배열을 초기화 해주고 싶었는데 그게 안됩니다.,.. x[100] = {0,} 이런식으로 썻는데 안되요...
제가 전역에 두고 해서 그런간가요 ㅠㅠ 지금 이게 막혀서 테스트도 못하고있습니다...