線形探索(Visual Basic)

学校のVBに合うように修正しました

番兵なし

Module Module1

    Sub Main()
        Const N = 20
        Dim d(N) As Integer
        Dim i As Integer
        Dim key As Integer
        Dim L As Integer
        Dim R As Integer
        Dim m As Integer
        Dim flag As Boolean

        ' 1からNの数を配列に格納&表示
        For i = 0 To N - 1
            d(i) = i + 1
            Console.Write(d(i))
            Console.Write(" ")
        Next
        Console.WriteLine()

        'キーを入力
        Console.WriteLine("キーを入力:")
        key = Console.ReadLine()

        ' 二分探索
        L = 0
        R = N - 1
        flag = False
        Do
            m = Math.Floor((L + R) / 2)
            If key = d(m) Then
                flag = True
            ElseIf key < d(m) Then
                R = m - 1
            ElseIf key > d(m) Then
                L = m + 1
            End If
        Loop While Not flag And L <= R

        ' 判定
        If flag Then
            Console.Write(key)
            Console.WriteLine("は見つかった")
        Else
            Console.Write(key)
            Console.WriteLine("は見つからなかった")
        End If

        ' コンソールウィンドウが閉じないようにする
        Console.WriteLine("Enterキーを押すと終わります")
        Console.ReadLine()
    End Sub

End Module