ForNext
Only Do What Only You Can Do
050. 逐次探索 (番兵)
VBScript
JScript
Perl
更新日 : 2010.10.18
$NINSU = 5; $FAILED = -1; sub search { my ($key, $no, $ary) = @_; $$ary[$$no] = $$key; $i = 0; while (1) { last if ($$ary[$i] == $$key); $i++; } return ($i == $$no ? $FAILED : $i + 1); } @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_050.pl 18は、見つかりませんでした。 499は、4番目にあります。
PHP
更新日 : 2010.11.03
<?php $NINSU = 5; $FAILED = -1; function search($ary, $key, $no) { global $FAILED; $ary[$no] = $key; $i = 0; while (1) { if ($ary[$i] == $key) break; $i++; } return ($i == $no ? $FAILED : $i + 1); } $ary = array(83, 55, 777, 499, 20); $key = 18; $idx = search($ary, $key, $NINSU); if ($idx == $FAILED) print "$key は、見つかりませんでした。\n"; else print "$key は、$idx 番目にあります。\n"; $key = 499; $idx = search($ary, $key, $NINSU); if ($idx == $FAILED) print "$key は、見つかりませんでした。\n"; else print "$key は、$idx 番目にあります。\n"; ?>
L:\>php lesson_06_050.php 18 は、見つかりませんでした。 499 は、4 番目にあります。
Python
更新日 : 2010.11.17
# coding: Shift_JIS NINSU = 5 FAILED = -1 def search(ary, key, no): global FAILED ary.append(key) i = 0; while (True): if (ary[i] == key): break i += 1 if i == no: return FAILED return i + 1 ary = [83, 55, 777, 499, 20] key = 18; idx = search(ary, key, NINSU) if (idx == FAILED): print "%dは、見つかりませんでした。" % key else: print "%dは、%d番目にあります。" % (key, idx) key = 499 idx = search(ary, key, NINSU) if (idx == FAILED): print "%dは、見つかりませんでした。" % key else: print "%dは、%d番目にあります。" % (key, idx)
N:\>python lesson_06_050.py 18は、見つかりませんでした。 499は、4番目にあります。
Ruby
更新日 : 2010.11.01
NINSU = 5 FAILED = -1 def search(key, no, ary) ary[no] = key i = 0 while (1) break if (ary[i] == key) i += 1 end return (i == no ? FAILED : i + 1) 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_050.rb 18は、見つかりませんでした。 499は、4番目にあります。
PowerShell
Scala
F#
C
更新日 : 2010.10.08
#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; }
R:\>lesson050\project1.exe 18は、見つかりませんでした。 499は、4番目にあります。
C++
C++Builder
VC++
C#
Java
更新日 : 2010.11.05
class Lesson050 { static final int NINSU = 5; static final int FAILED = -1; public static void main(String[] args) { int[] ary = {83, 55, 777, 499, 20, 0}; int key = 18; int idx = search(ary, key, NINSU); if (idx == FAILED) System.out.printf("%dは、見つかりませんでした。\n", key); else System.out.printf("%dは、%d番目にあります。\n", key, idx); key = 499; idx = search(ary, key, NINSU); if (idx == FAILED) System.out.printf("%dは、見つかりませんでした。\n", key); else System.out.printf("%dは、%d番目にあります。\n", key, idx); } static int search(final int ary[], final int key, final int no) { ary[no] = key; int i = 0; while (true) { if (ary[i] == key) break; i++; } return (i == no ? FAILED : i + 1); } }
L:\>java Lesson050 18は、見つかりませんでした。 499は、4番目にあります。
Objective-C
D
VB
VB.NET
Delphi
更新日 : 2010.09.24
program Project1; {$APPTYPE CONSOLE} uses SysUtils; const NINSU = 5; FAILED = -1; function search(ary:array of Integer; const key: Integer):Integer; var i: Integer; begin ary[High(ary)] := key; for i := Low(ary) to High(ary) do begin if ary[i] = key then begin result := i; break; end; end; if result = High(ary) then result := FAILED else inc(result); end; var ary: array[1..NINSU + 1] of Integer = (83, 55, 777, 499, 20, 0); 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:\>lesson050\project1.exe 18は、見つかりませんでした。 499は、4番目にあります。