5.1.3 동적 배열 테스트

앞에서 만든 동적 배열이 잘 동작하는지 확인하는 시뮬레이션 코드를 작성합시다. 여기에서는 순차적으로 자료를 보관하는 예와 특정 키순으로 보관하는 예, 인덱스를 사용하는 예를 들게요.

 

먼저 순차적으로 동적 배열을 사용하는 시뮬레이션 코드를 작성합시다.

먼저 동적 배열을 생성합니다.

그리고 도서 개체를 생성하여 순차적으로 동적 배열에 보관합니다.

동적 배열에 있는 내용을 확인합니다. 이 부분은 별도의 함수로 작성합시다.

그리고 보관한 도서를 찾아 봅시다. 이 부분도 별도의 함수로 작성할게요. 이 함수는 동적 배열과 검색할 도서 제목을 입력 인자로 전달할게요. 테스트를 위해 보관한 도서와 보관하지 않은 도서를 검색해 봅시다.

이번에는 보관한 자료를 삭제합시다. 이 부분도 별도의 함수로 작성할게요.

동적 배열에 보관한 목록을 출력하여 잘 삭제하였는지 확인합니다.

마지막으로 시뮬레이션에 사용한 개체들을 정리합니다. 이 부분도 별도의 함수로 작성합시다.

 

먼저 동적 배열에 보관한 도서 목록을 출력하는 함수를 작성합시다.

동적 배열에 자료를 보관한 시작 위치와 마지막 다음 위치를 얻어옵니다.

위치를 점진적으로 이동하면서 전체 목록을 출력해야 합니다.

현재 위치의 도서 정보를 참조합니다. 여기에서는 도서 개체를 보관하였으므로 이에 맞게 형변환합니다.

해당 위치에 보관한 도서 개체가 유효하면 도서 정보를 출력합니다.

 

도서 제목으로 동적 배열에 보관한 도서를 검색하는 함수를 작성합시다.

동적 배열에서 검색할 구간의 시작과 끝을 얻어옵니다.

순차적으로 이동하면서 검색합니다.

현재 위치의 도서 개체를 얻어옵니다.

도서 개체가 유효하면 도서 제목이 차이가 없는지 확인합니다.

찾았으면 도서 정보를 출력하고 함수를 종료합니다.

만약 순차적으로 이동하면서 검색하여도 발견하지 못하면 이를 통보합니다.

 

도서 제목으로 동적 배열에 보관한 도서를 삭제하는 함수를 작성합시다.

삭제할 도서를 찾는 로직은 검색하는 부분과 비슷합니다.

차이점은 찾은 위치의 내용을 배열에서 제거한다는 것입니다.

그리고 해당 도서를 소멸할게요.

 

시뮬레이션을 마치면서 동적으로 생성한 개체를 소멸하는 함수를 작성합시다.

검색과 삭제를 할 때처럼 동적 배열을 순차적으로 이동하면서 도서 개체를 참조합니다.

만약 도서 개체가 유효하면 도서 개체를 소멸합니다.

마지막으로 동적 배열도 소멸합니다.

 

이번에는 특정 키순으로 자료를 보관하는 시뮬레이션 함수를 작성합시다.

먼저 동적 배열을 생성합니다.

여기에서는 지은이 순으로 보관하는 것으로 할게요. 그리고 보관할 위치를 찾아 보관하는 함수는 별도의 함수로 작성합시다.

확인하기 위해 동적 배열에 보관한 도서 목록을 출력합니다.

검색과 삭제 기능은 순차 보관할 때와 차이가 없습니다.

 

지은이 순으로 도서를 보관하는 함수를 작성합시다.

보관할 위치를 찾기 위해 구간의 시작과 끝을 구합니다.

순차적으로 이동하면서 보관한 도서 개체를 구합니다.

보관한 도서 개체와 추가할 도서 개체의 지은이를 비교하여 보관한 도서 개체의 값이 크거나 같으면 위치를 찾은 것입니다.

찾은 위치에 도서를 보관합니다.

 

마지막으로 인덱스로 보관하는 시뮬레이션 함수를 작성합시다.

먼저 동적 배열을 생성합니다.

인덱스로 사용할 때는 최대 보관할 수 있는 개수 만큼을 디폴트 값으로 설정합니다. 여기에서는 최대 100으로 하고 디폴트 값을 0으로 설정할게요.

그리고 특정 인덱스에 보관한 내용을 변경하는 함수를 이용하여 도서 개체를 보관합니다. 보관할 위치는 도서 번호 – 1 인덱스에 보관하는 것으로 할게요.

원하는 대로 보관하는지 확인합니다.

도서 번호로 검색합시다. 이 부분은 별도의 함수로 작성할게요. 보관한 도서와 보관하지 않은 도서 번호를 확인합니다.

도서 번호로 보관한 도서를 삭제합니다. 이 부분도 별도의 함수로 작성할게요.

삭제 동작이 정상적인지 확인하기 위해 전체 정보를 출력합니다.

 

도서 번호로 검색하는 함수를 작성합시다.

도서 번호 -1 인덱스에 보관한 도서 개체를 얻어옵니다.

만약 유효하면 검색 성공한 것입니다.

그렇지 않다면 실패한 것입니다.

 

도서 번호로 보관한 도서 개체를 삭제하는 함수를 작성합시다.

먼저 도서 번호 -1 인덱스의 도서를 구합니다.

만약 유효하면 도서가 있는 것입니다.

이 때는 도서 개체를 소멸합니다.

그리고 해당 인덱스에 0으로 보관한 값을 설정합니다.

유효하지 않으면 해당 번호의 도서는 없는 것입니다.

 

 

이상으로 동적 배열의 테스트를 마칠게요.