28 lines
715 B
Plaintext
28 lines
715 B
Plaintext
100 PROGRAM "Search.bas"
|
|
110 RANDOMIZE
|
|
120 NUMERIC ARR(1 TO 20)
|
|
130 CALL FILL(ARR)
|
|
140 PRINT:INPUT PROMPT "Value: ":N
|
|
150 LET IDX=SEARCH(ARR,N)
|
|
160 IF IDX THEN
|
|
170 PRINT "The value";N;"was found the index";IDX
|
|
180 ELSE
|
|
190 PRINT "The value";N;"was not found."
|
|
200 END IF
|
|
210 DEF FILL(REF T)
|
|
220 LET T(LBOUND(T))=RND(3):PRINT T(1);
|
|
230 FOR I=LBOUND(T)+1 TO UBOUND(T)
|
|
240 LET T(I)=T(I-1)+RND(3)+1
|
|
250 PRINT T(I);
|
|
260 NEXT
|
|
270 END DEF
|
|
280 DEF SEARCH(REF T,N)
|
|
290 LET SEARCH=0:LET BO=LBOUND(T):LET UP=UBOUND(T)
|
|
300 DO
|
|
310 LET K=INT((BO+UP)/2)
|
|
320 IF T(K)<N THEN LET BO=K+1
|
|
330 IF T(K)>N THEN LET UP=K-1
|
|
340 LOOP WHILE BO<=UP AND T(K)<>N
|
|
350 IF BO<=UP THEN LET SEARCH=K
|
|
360 END DEF
|