ForNext
Only Do What Only You Can Do
049. 逐次探索
VBScript
JScript
Perl
更新日 : 2010.10.18
$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番目にあります。
PHP
更新日 : 2010.11.03
<?php $NINSU = 5; $FAILED = -1; function search($ary, $key, $no) { global $FAILED; $i = 0; while (1) { if ($i == $no) return $FAILED; if ($ary[$i] == $key) return $i + 1; $i++; } } $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_049.php 18 は、見つかりませんでした。 499 は、4 番目にあります。
Python
更新日 : 2010.11.17
# coding: Shift_JIS NINSU = 5 FAILED = -1 def search(ary, key, no): global FAILED i = 0; while (True): if (i == no): return FAILED if (ary[i] == key): return i + 1 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_049.py 18は、見つかりませんでした。 499は、4番目にあります。
Ruby
更新日 : 2010.11.01
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番目にあります。
PowerShell
Scala
F#
C
更新日 : 2010.10.08
#include <stdio.h> #define NINSU 5 #define FAILED -1 int 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番目にあります。
C++
C++Builder
VC++
C#
Java
更新日 : 2010.11.05
class Lesson049 { static final int NINSU = 5; static final int FAILED = -1; public static void main(String[] args) { int[] ary = {83, 55, 777, 499, 20}; 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) { int i = 0; while (true) { if (i == no ) return FAILED; if (ary[i] == key) return i + 1; i++; } } }
L:\>java Lesson049 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(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番目にあります。