티스토리 뷰

생각해 볼 내용



배운 내용을 토대로 아래 질문에 대해 생각해보자.


1. 배열 S를 이용하여 "구민영"의 학년이 무엇인지 알아내는 프로그램을 작성하고 싶다. 순서도를 그려보자.



위 순서도에 대해 아래 질문에 답해보자.


1. 어디서부터, 어떻게 찾는가?

- 배열의[0]번 원소부터 찾아간다.

2. 찾으면 출력 후 멈추는가 아니면 계속 찾는가?

- 찾을 때 까지 계속 반복한다.

3. 없는 경우 없다는 것을 어떻게 아는가?

- 배열이 없을 때의 결과를 따로 처리해 주어야 한다.



위 순서도의 문제점엔 무엇이 있고 어떻게 해결할 수 있을까?



2. 배열 S를 이용하여 우리 클래스의 모든 2학년 학생 이름을 출력하는 프로그램을 작성하고 싶다. 순서도를 그려보자.




위 순서도에 대해 아래 질문에 답해보자.


1. 어디서부터, 어떻게 찾는가?

- 배열의[0]번 원소부터 찾아간다.

2. 모두 찾을 수 있는가? 어떻게 확신하는가?

- 최상단 배열포인터를 함수의 인자로 전달하여 판단한 뒤 배열의 형태로 리턴한다. 이를 통해 2학년 학생들 만의 배열을 따로 만드는 것도 가능하다.

3. 없는 경우 없다는 것을 어떻게 아는가?

- 배열의 길이 또는 없을 경우의 처리 루틴을 만들어 제공할 수 있다.



위 순서도의 문제점엔 무엇이 있고 어떻게 해결할 수 있을까?


배열 안의 공백을 없앨 수는 없을까?



3. 수강정정 기간에 2학년 학생 "김민우"가 새로 수강신청을 하였다. 배열 S에 추가하는 프로그램을 작성하고 싶다. 순서도를 그려보자.



위 순서도에 대해 아래 질문에 답해보자.


1. 추가할 자리를 어떻게 결정하는가?

- 추가 신청자이므로 마지막 명단에 등록하였다. 중간의 임의의 장소에 집어넣는다면 정렬하는 함수를 새로 만들거나 위치를 지정하는 int형의 데이터로 처리를 해도 좋을 것 같다.

2. 추가된 학생도 검색할 수 있는가?

- 기존 배열보다 크기가 1큰 배열을 만들어 기존 배열을 복사하고 마지막 학생을 추가하려고 한다. 때문에 새로 생긴 배열에서 검색기능을 수행할 수 있다.

3. 더 좋은 방법이 있을까?

- 정렬 기능이 있다면 좋을 것 같다. 학번, 이름 순으로 정리한다면 사용자에게 편리한 프로그램이 될 것 같다.



위 순서도의 문제점엔 무엇이 있고 어떻게 해결할 수 있을까?


memcpy() 함수를 통해 반복문 없이 배열 A의 원소에 S를 바로 대입할 수 있다.  



4. 수강정정 기간에 "김기태" 학생이 수강철회를 하였다. 배열 S에서 삭제하는 프로그램을 작성하고 싶다. 순서도를 그려보자.




위 순서도에 대해 아래 질문에 답해보자.


1. "김기태"는 한명인가? 여러명이라면 어떻게 하나?

- 여러명일 수도 있다. 때문에 여러명에 대한 처리를 추가해야 한다. 위의 순서도에서는 김기태가 여러명일 경우 누구인 지 판단할 수 없으므로 삭제하지 않았다.

2. 데이터가 삭제된 자리는 어떻게 되는가?

- 기존 배열보다 1 작은 배열에 원소를 추가하였고 기존 학생의 빈자리는 채워지게 된다.

3. 검색, 삽입, 삭제가 불규칙적이고 연속적으로 수행되어도 괜찮은가?

- 매 회마다 배열의 크기를 바꿔줘 크기를 제대로 인식시킬 수 있다면 문제가 발생하지 않을 것이다.

4. 더 좋은 방법이 있을까?

- 정보가 부족해 중복되는 사람에 대한 처리가 어렵다. 학생에게 고유값을 주어 문제 발생을 해결해야한다.


위 순서도의 문제점엔 무엇이 있고 어떻게 해결할 수 있을까?

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함