要素数がn である配列a からkey と一致する全要素の添字を、配列idx の先頭から順に格納し、一致した要素数を返す以下の関数を作成せよ。 int searchidx (int a [], int n , int key , int idx []); |
/* 演習3-2 配列から任意の値と一致する要素の添字を配列に格納 */ #include <stdio.h> /*--- 配列a中の値がxである全要素の添字をidxに格納 ---*/ int searchidx(int a[], int n, int key, int idx[]) { int i, count = 0; for (i = 0; i < n; i++) if (a[i] == key) idx[count++] = i; return (count); } int main(void) { int i, ky, n; int x[7], idx[7]; int nx = sizeof(x) / sizeof(x[0]); printf("%d個の整数を入力してください。\n", nx); for (i = 0; i < nx; i++) { printf("x[%d]:", i); scanf("%d", &x[i]); } printf("探す値:"); scanf("%d", &ky); n = searchidx(x, nx, ky, idx); /* 配列xから値がkyである全要素を探索 */ if (n == -1) puts("一致する要素は存在しません。"); else { printf("一致する要素は以下の%d個です。\n", n); for (i = 0; i < n; i++) printf("x[%d] ", idx[i]); putchar('\n'); } return (0); }