BohYoh.comトップページへ

C言語によるアルゴリズムとデータ構造

戻る  

演習3-3の解答

 要素が値の降順で並んでいるlong型の配列からの探索をbsearch 関数を用いて行うプログラムを作成せよ。

/* 演習3-3 bsearch関数を利用して降順に並んだlong型配列から要素を探索 */ #include <stdio.h> #include <stdlib.h> /*--- long型整数を比較する関数(降順用) ---*/ int long_cmpr(const long *a, const long *b) { if (*a < *b) return (1); else if (*a > *b) return (-1); else return (0); } int main(void) { int i; long ky, *p; long x[7]; int nx = sizeof(x) / sizeof(x[0]); printf("%d個の整数を降順に入力してください。\n", nx); printf("x[0]:"); scanf("%ld", &x[0]); for (i = 1; i < nx; i++) { do { printf("x[%d]:", i); scanf("%ld", &x[i]); } while (x[i] > x[i - 1]); /* 一つ前の値よりも大きければ再入力 */ } printf("探す値:"); scanf("%ld", &ky); p = bsearch(&ky, /* 探索値へのポインタ */ x, /* 配列 */ nx, /* 要素数 */ sizeof(long), /* 要素の大きさ */ (int (*)(const void *, const void *))long_cmpr /* 比較関数 */ ); if (p == NULL) puts("探索に失敗しました。"); else printf("%dは%d番目にあります。\n", ky, (int)(p - &x[0]) + 1); return (0); }


戻る