주소록 만들기 문제
(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 |