線形探索について
C言語の線形探索の課題なんですが
5つの整数を入力して
その入力した値からみつけたい値を探索する課題なのですが
#include <stdio.h>
/*--- 要素数nの配列aからkeyと一致する要素を線形探索 ---*/
int search(const int a[], int n, int key)
{
int i = 0;
while (1) {
if (i == n)
return (-1); /* 探索失敗 */
if (a[i] == key)
return (i); /* 探索成功 */
i++;
}
}
int main(void)
{
int i, ky, idx;
int x[4];
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);
idx = search(x, nx, ky); /* 配列xから値がkyである要素を線形探索 */
if (idx == -1)
puts("探索に失敗しました。");
else
printf("%dは%d番目にあります。\n", ky, idx + 1);
return (0);
}
ここまではわかるのですが、
x[0]=99
x[1]=99
x[2]=88
x[3]=99
x[4]=22
と入力したときに
99は
1番目に見つかりました
2番目に見つかりました
4番目に見つかりました
と出力したいのですがうまくいきません
線形探索で同じ数値を探索するにはどうすればよいのですか?