Algorithm/Do it 30

[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 3장 검색 연습문제 Q6 답안 p.128

Q6. 요소의 값이 내림차순으로 정렬된 long형 배열에서의 검색을 bsearch 함수를 사용하여 프로그램을 작성하세요. 답안) #include #include int long_cmpr(const long *a, const long *b) { if(*a *b) return -1; else return 0; } int main(void) { int i, nx; long ky, *x, *p; puts("bsearch 함수를 사용하여 검색"); printf("요소 개수 : "); scanf("%d", &nx); x = calloc(nx, sizeof(long)); printf("x[0] : "); scanf("%ld", &x[0]); for(i=1; i x..

Algorithm/Do it 2019.11.04

[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 3장 검색 연습문제 Q5 답안 p.115

Q5. 우리가 살펴본 이진 검색 알고리즘 프로그램은 검색할 값과 같은 값을 갖는 요소가 하나 이상일 경우 그 요소 중에서 맨 앞의 요소를 찾지 못합니다. 예를 들어, 아래 그림의 배열에서 7을 검색하면 중앙에 위치하는 a[5]를 검색합니다. 맨 앞의 요소를 찾는 bin_search2 함수를 작성해보세요. int bin_search2(const int a[], int n, int key); 답안) #include #include int bin_search2(const int a[], int n, int key) { int j; int pl = 0; int pr = n-1; int pc; int chk = 1; do { pc = (pl + pr) / 2; if(a[pc] == key) chk = 0; els..

Algorithm/Do it 2019.10.16

[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 3장 검색 연습문제 Q3 답안 p.115

Q3. 요소의 개수가 n인 배열 a에서 key와 일치하는 모든 요소의 인덱스를 배열 idx의 맨 앞부터 순서대로 저장하고, 일치한 요소의 개수를 반환하는 함수를 작성하세요. 예를 들어, 요소의 개수가 8인 배열 a의 요소가 {1, 8, 2, 8, 4, 6, 7, 9 } 이고 key가 9면 배열 idx에 {1, 3, 7 }을 저장하고 3을 반환합니다. int search_idx(const int a[], int n, int key, int idx[]); 답안) #include #include int search_idx(const int a[], int n, int key, int idx[]) { int i = 0; int j = 0; for(i; i

Algorithm/Do it 2019.10.16

[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 2장 기본 자료구조 연습문제 Q12 답안 p.93

Q12. 실습 2-13 프로그램의 시력 분포를 오른쪽처럼 그래프 모양으로 출력하도록 프로그램을 작성하세요. 0.1 ~ : * 0.2 ~ : *** 0.3 ~ : * ... 이하 생략 ... 코드) #include #define VMAX 21 typedef struct { char name[20]; int height; double vision; } PhysCheck; double ave_height(const PhysCheck dat[], int n) { int i; double sum=0; for(i=0; i

Algorithm/Do it 2019.10.12

[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 2장 기본 자료구조 연습문제 Q7 답안 p.75

Q7. 앞의 프로그램을 기초로 기수 변환 과정을 상세히 출력하는 프로그램을 작성하세요. ※ 그림 2-11, 그림 2-13에서는 나눗셈의 나머지를 몫의 오른쪽에 출력했지만 여기서는 나머지를 나누어지는 수의 오른쪽에 출력합니다. 코드) #include #define swap(type, x, y) do{type t=x; x=y; y=t;} while(0) int card_conv(unsigned x, int n, char d[]) { char dchar[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; int digits = 0; int j=0; if(x == 0) { d[digits++] = dchar[0]; } else { while(x) { printf("%d| %d --- ..

Algorithm/Do it 2019.10.09
반응형