home > 写経編 > 柴田望洋『明解C言語 入門編』 > 6. 関数 >

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番目にあります。

Ada

PL/SQL

T-SQL

関数型

inserted by FC2 system