#/*********************************************************** # seqsrch.rb -- 逐次探索 #***********************************************************/ NOT_FOUND = (-1) def seqsrch1(x, a, m, n) while (m <= n && a[m] != x); m += 1; end if (m <= n); return m; end return NOT_FOUND end def seqsrch2(x, a, m, n) if (m > n); return NOT_FOUND; end a[n + 1] = x; # 番人 while (a[m] != x); m += 1; end if (m <= n); return m; end return NOT_FOUND end def seqsrch3(x, a, m, n) if (m > n); return NOT_FOUND; end t = a[n]; a[n] = x; # 番人 while (a[m] != x); m += 1; end a[n] = t if (m < n); return m; end if (x == t); return n; end return NOT_FOUND end #******************************************************** N = 20 a = [] printf("***** 逐次探索デモンストレーション *****\n") srand for i in 0...N a[i] = (100 * rand).to_i end printf(" i : ") for i in 0...N; printf(" %2d", i); end printf("\n") printf("a[i]: ") for i in 0...N; printf(" %2d", a[i]); end printf("\n") printf("\n何を探しますか? ") x = gets.to_i printf("seqsrch1: ") i = seqsrch1(x, a, 0, N - 1) if (i != NOT_FOUND); printf("i = %d\n", i) else; printf("見つかりません\n"); end printf("seqsrch2: ") i = seqsrch2(x, a, 0, N - 1) if (i != NOT_FOUND); printf("i = %d\n", i) else; printf("見つかりません\n"); end printf("seqsrch3: ") i = seqsrch3(x, a, 0, N - 1) if (i != NOT_FOUND); printf("i = %d\n", i) else; printf("見つかりません\n"); end exit 0