逐次探索 (番兵)

明解C言語 入門編 > 6. 関数 >

逐次探索 (番兵)

C


#include <stdio.h>

#define NINSU 5
#define FAILED -1

int search(int ary[], const int key, const int no)
{
ary[no] = key;

int i = 0;
while (1)
{
if (ary[i] == key) break;
i++;
}

return (i == no ? FAILED : i + 1);
}

int main(int argc, char* argv[])
{
int ary[NINSU + 1] = {83, 55, 777, 499, 20};
int key = 18;

int idx = search(ary, key, NINSU);
if (idx == FAILED)
printf("%dは、見つかりませんでした。\n", key);
else
printf("%dは、%d番目にあります。\n", key, idx);

key = 499;

idx = search(ary, key, NINSU);
if (idx == FAILED)
printf("%dは、見つかりませんでした。\n", key);
else
printf("%dは、%d番目にあります。\n", key, idx);

return 0;
}

実行結果

T:\>lesson050\project1.exe
18は、見つかりませんでした。
499は、4番目にあります。