티스토리 뷰
생각해 볼 내용
배운 내용을 토대로 아래 질문에 대해 생각해보자.
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. 더 좋은 방법이 있을까?
- 정보가 부족해 중복되는 사람에 대한 처리가 어렵다. 학생에게 고유값을 주어 문제 발생을 해결해야한다.
위 순서도의 문제점엔 무엇이 있고 어떻게 해결할 수 있을까?
'프로그래밍 > C' 카테고리의 다른 글
[자료구조] 2일차_과제(180316) - 오목 (0) | 2018.03.16 |
---|---|
[창의적it 프로그래밍] 1차 과제 -구조체- (0) | 2018.03.13 |
[자료구조] 1일차_토론(180312) (0) | 2018.03.07 |
[자료구조] 1일차_과제(180309) (0) | 2018.03.06 |
[자료구조] 1일차_실습(180309) (1) | 2018.03.06 |
- Total
- Today
- Yesterday
- Remix
- Gatsby.js
- 이진탐색 #중복
- alpine.js
- oracle
- vue.js
- JavaScript
- SQLite
- DevOps
- gcp
- aws
- REACT
- Next.js
- nosql
- PostgreSQL
- vue
- Cloud
- Azure
- node.js
- MySQL
- Angular
- Quasar
- hoisting
- RDBMS
- nuxt.js
- svelte
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |