목차
없음
본문내용
se return false;
}
bool Queue::isempty() {// 큐이 비어 있는지 확인하는 함수
if (front==rear) return true;
else return false;
}
void Queue::add(int x, int y) {// 큐에 값을 입력하는 함수
if (isfull()) {
} // 더이상 저장 할수 없으므로 종료
else {
rear++;
qv[rear].ip=x;
qv[rear].jp=y;
}
}// 입력 함수 끝
Q_value Queue::read(int xx) {//큐에 저장된 값 읽기
if (isempty()) {
} //읽어올 데이타가 없으므로 종료
front++; // front 를 하나 증가시키고
return qv[xx]; // front 위치의 값을 반환한다.
}//end of read()
bugsmove::bugsmove() { // 생성자 함수
for (int k=0;k<4;k++) // 벌레가 움직이는 배열의 값을 모두 0으로 초기화
for (int l=0;l<4;l++)
count[k][l]=0;
Q.add(0,0);
count[0][0]++;
Rend=1;// [0][0]에서 시작 하므로 이 자리 방문수 1회 증가.Rend 1증가
i=0;j=0;
true_value=false; // 현위치 [0][0]으로 지정. 현재 이동가능 위치
mover[0].b=-1; mover[0].a=0;
mover[1].b=-1; mover[1].a=1; // 이동하는 방향을 정하여 i,j 값을 계산하게
mover[2].b=0 ; mover[2].a=1; // 해주는 값들을 입력
mover[3].b=1 ; mover[3].a=1;
mover[4].b=1 ; mover[4].a=0;
mover[5].b=1 ; mover[5].a=-1;
mover[6].b=0 ; mover[6].a=-1;
mover[7].b=-1; mover[7].a=-1;
}
bool bugsmove::checkend() {//벌레 행동의 끝을 확인하는 함수
if (Rend==16) // 모든 구역에 벌레가 한번 이상 오면 끝나므로
return true; // Rend 가 16이면 true값을 반환하여 종료를 알린다.
else return false;
}
void bugsmove::moving() { //벌레의 이동을 결정하는 함수
int q=0;
while (true_value==false) {// 벌레가 이동 범위 밖으로 나가는지를 확인하는 조건
q=rand()%8; // rand() 함수에서 발생한 난수의 8의 나머지로 방향 결정
h=i + mover[q].a;
w=j + mover[q].b; // h,w변수에 먼저 갈곳을 저장한뒤
if (0<=h && h<=3 && 0<=w && w<=3) // 범위 안에 속하는 지 결정
{
i=h; j=w;
true_value=true; // 범위에 속하면 i,j 에저장 가능 여부 확인
if (count[i][j]==0)
Rend++; //이동한 구역이 처음이면 Rend 1증가
count[i][j]++; // 각각의 위치의 값을 1씩 증가 시켜 방문 횟수 결정
Q.add(i,j); // 큐 객체에i,j 값 저장
}
}
true_value=false;
}
int bugsmove::pathnum(int a, int b) {//각 구역의 방문 횟수 및 이동 경로 출력 함수
return count[a][b];
}
Q_value bugsmove::retpos(int yy) { //큐의 값을 차례로 읽어 오는 프로그램..
return Q.read(yy);
}
}
bool Queue::isempty() {// 큐이 비어 있는지 확인하는 함수
if (front==rear) return true;
else return false;
}
void Queue::add(int x, int y) {// 큐에 값을 입력하는 함수
if (isfull()) {
} // 더이상 저장 할수 없으므로 종료
else {
rear++;
qv[rear].ip=x;
qv[rear].jp=y;
}
}// 입력 함수 끝
Q_value Queue::read(int xx) {//큐에 저장된 값 읽기
if (isempty()) {
} //읽어올 데이타가 없으므로 종료
front++; // front 를 하나 증가시키고
return qv[xx]; // front 위치의 값을 반환한다.
}//end of read()
bugsmove::bugsmove() { // 생성자 함수
for (int k=0;k<4;k++) // 벌레가 움직이는 배열의 값을 모두 0으로 초기화
for (int l=0;l<4;l++)
count[k][l]=0;
Q.add(0,0);
count[0][0]++;
Rend=1;// [0][0]에서 시작 하므로 이 자리 방문수 1회 증가.Rend 1증가
i=0;j=0;
true_value=false; // 현위치 [0][0]으로 지정. 현재 이동가능 위치
mover[0].b=-1; mover[0].a=0;
mover[1].b=-1; mover[1].a=1; // 이동하는 방향을 정하여 i,j 값을 계산하게
mover[2].b=0 ; mover[2].a=1; // 해주는 값들을 입력
mover[3].b=1 ; mover[3].a=1;
mover[4].b=1 ; mover[4].a=0;
mover[5].b=1 ; mover[5].a=-1;
mover[6].b=0 ; mover[6].a=-1;
mover[7].b=-1; mover[7].a=-1;
}
bool bugsmove::checkend() {//벌레 행동의 끝을 확인하는 함수
if (Rend==16) // 모든 구역에 벌레가 한번 이상 오면 끝나므로
return true; // Rend 가 16이면 true값을 반환하여 종료를 알린다.
else return false;
}
void bugsmove::moving() { //벌레의 이동을 결정하는 함수
int q=0;
while (true_value==false) {// 벌레가 이동 범위 밖으로 나가는지를 확인하는 조건
q=rand()%8; // rand() 함수에서 발생한 난수의 8의 나머지로 방향 결정
h=i + mover[q].a;
w=j + mover[q].b; // h,w변수에 먼저 갈곳을 저장한뒤
if (0<=h && h<=3 && 0<=w && w<=3) // 범위 안에 속하는 지 결정
{
i=h; j=w;
true_value=true; // 범위에 속하면 i,j 에저장 가능 여부 확인
if (count[i][j]==0)
Rend++; //이동한 구역이 처음이면 Rend 1증가
count[i][j]++; // 각각의 위치의 값을 1씩 증가 시켜 방문 횟수 결정
Q.add(i,j); // 큐 객체에i,j 값 저장
}
}
true_value=false;
}
int bugsmove::pathnum(int a, int b) {//각 구역의 방문 횟수 및 이동 경로 출력 함수
return count[a][b];
}
Q_value bugsmove::retpos(int yy) { //큐의 값을 차례로 읽어 오는 프로그램..
return Q.read(yy);
}
추천자료
- C언어로 구현한 자료구조의 원형큐
- 힙 자료구조를 이용한 상입,제거(특정 토큰에 대해)
- 리스트 자료구조를 이용한 상입,제거(특정 토큰에 대해)
- [자료구조]Infix로 된 수식을 Prefix와 Postfix로 변환 시키는 프로그램입니다.(C언어)
- [자료구조] 배열을 이용한 다항식의 덧셈 곱셈 연산
- [자료구조, Algorithm] 외부정렬(External Sort) PPT version
- [자료구조] 스택 함수 구현
- [자료구조] 연결 리스트를 이용한 오름차순 정리
- 2010년 2학기 자료구조 출석대체시험 핵심체크
- 철근 콘크리트 구조.PPT자료
- 연결리스트(자료구조).ppt
- [자료구조] 피보나치수열 - int 데이타 사이즈를 넘어가는 결과값 계산 프로그램
- C언어 자료구조 Binary Search Tree (이진 탐색 트리)
- C언어 자료구조 HashTable 해시테이블
소개글