逐次探索
明解C言語 入門編 > 6. 関数 >
逐次探索
C
#include <stdio.h>#define NINSU 5
#define FAILED -1int search(const int ary[], const int key, const int no)
{
int i = 0;
while (1)
{
if (i == no ) return FAILED;
if (ary[i] == key) return i + 1;
i++;
}
}int main(int argc, char* argv[])
{
int ary[NINSU] = {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;
}
実行結果
R:\>lesson049\project1.exe
18は、見つかりませんでした。
499は、4番目にあります。
Delphi
program Project1;{$APPTYPE CONSOLE}
uses
SysUtils;const
NINSU = 5;
FAILED = -1;function search(const ary:array of Integer; const key: Integer):Integer;
var
i: Integer;
begin
result := FAILED;for i := Low(ary) to High(ary) do
begin
if ary[i] = key then
begin
result := i + 1;
exit;
end;
end;
end;var
ary: array[1..NINSU] of Integer = (83, 55, 777, 499, 20);
key, idx: Integer;
begin
key := 18;
idx := search(ary, key);if idx = FAILED then
writeln(format('%dは、見つかりませんでした。', [key]))
else
writeln(format('%dは、%d番目にあります。', [key, idx]));key := 499;
idx := search(ary, key);if idx = FAILED then
writeln(format('%dは、見つかりませんでした。', [key]))
else
writeln(format('%dは、%d番目にあります。', [key, idx]));
end.
実行結果
S:\>lesson049\project1.exe
18は、見つかりませんでした。
499は、4番目にあります。
Perl
$NINSU = 5; $FAILED = -1; sub search { my @ary = @_; my $key = $ary[0]; my $no = $ary[1]; $i = 2; while (1) { return $FAILED if ($i == $no + 2); return $i - 1 if ($ary[$i] == $key) ; $i++; } } @ary = (83, 55, 777, 499, 20); $key = 18; $idx = &search($key, $NINSU, @ary); if ($idx == $FAILED) { print "$keyは、見つかりませんでした。\n"; } else { print "$keyは、$idx番目にあります。\n"; } $key = 499; $idx = &search($key, $NINSU, @ary); if ($idx == $FAILED) { print "$keyは、見つかりませんでした。\n"; } else { print "$keyは、$idx番目にあります。\n"; }
実行結果
L:\>perl lesson_06_049.pl
18は、見つかりませんでした。
499は、4番目にあります。
Ruby
NINSU = 5 FAILED = -1 def search(key, no, ary) i = 0 while (1) return FAILED if (i == no) return i + 1 if (ary[i] == key) i += 1 end end ary = [83, 55, 777, 499, 20] key = 18 idx = search(key, NINSU, ary) if (idx == FAILED) print "#{key}は、見つかりませんでした。\n" else print "#{key}は、#{idx}番目にあります。\n" end key = 499 idx = search(key, NINSU, ary) if (idx == FAILED) print "#{key}は、見つかりませんでした。\n" else print "#{key}は、#{idx}番目にあります。\n" end
実行結果
L:\>ruby l:\lesson_06_049.rb
18は、見つかりませんでした。
499は、4番目にあります。