Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 需要关于二进制搜索算法错误的帮助吗_Algorithm_Fortran_Binary Search_Fortran95 - Fatal编程技术网

Algorithm 需要关于二进制搜索算法错误的帮助吗

Algorithm 需要关于二进制搜索算法错误的帮助吗,algorithm,fortran,binary-search,fortran95,Algorithm,Fortran,Binary Search,Fortran95,使用编译器时,我有一个错误: Error: Operands of comparison operator '.EQ.' at (1) are LOGICAL(4)/LOGICAL(4) 我不知道这意味着什么。我包括了子程序。你有办法解决这个问题吗 非常感谢你抽出时间 SUBROUTINE search(iarray, ItemSought, Found, Location) CHARACTER(20), DIMENSION(50),INTENT(IN)::itemarray CHARAC

使用编译器时,我有一个错误:

Error: Operands of comparison operator '.EQ.' at (1) are LOGICAL(4)/LOGICAL(4)
我不知道这意味着什么。我包括了子程序。你有办法解决这个问题吗

非常感谢你抽出时间

  SUBROUTINE search(iarray, ItemSought, Found, Location)
CHARACTER(20), DIMENSION(50),INTENT(IN)::itemarray
CHARACTER(20)::ItemSought
LOGICAL, INTENT(OUT)::Found
INTEGER, INTENT(OUT)::Location
INTEGER:: First, Last, Middle

WRITE(*,'(1x,A)',ADVANCE="NO"),"What are you searching for? "
READ*, ItemSought

First=1
Last=SIZE(Iarray)
FOUND = .FALSE.

DO
    IF ((First > Last) .OR. Found) RETURN
        Middle = (First+Last)/2
    IF (ItemSought < Iarray(Middle)) THEN
        Last=Middle-1
    ELSE IF (ItemSought > Iarray(Middle)) THEN
        First=Middle+1
    ELSE
        Found = .TRUE.
        Location = Middle
    END IF
END DO


IF (Found == .TRUE.) THEN
PRINT*, Itemsought

END SUBROUTINE
子例程搜索(iarray、ItemSeeded、Found、Location)
字符(20)、维度(50)、意图(IN)::itemarray
字符(20)::所选项目
逻辑,意图(输出)::找到
整数,意图(输出)::位置
整数::第一、最后、中间
写下(*,”(1x,A)”,ADVANCE=“NO”),“您在搜索什么?”
阅读*,项目
第一个=1
最后一个=大小(Iarray)
发现=.FALSE。
做
如果((第一个>最后一个).OR.Found)返回
中间=(第一个+最后一个)/2
如果是(中间的),那么
最后=中间-1
否则,如果(itemsequest>Iarray(中间)),则
第一个=中间+1
其他的
找到=.TRUE。
位置=中间
如果结束
结束
如果(find=.TRUE.),则
打印*,已查找项目
结束子程序

我不想承认我最后一次使用FORTRAN,但它看起来确实与我记忆中的大不相同。所以这只是一个猜测

根据错误消息,我会说它在这一行(你没有说是哪一行):

同样只是猜测,您通常不通过比较真/假来测试逻辑值,而是直接使用它:

IF (Found) THEN
.EQ.
(或
=
)关系运算符,就像
.NE.
/=
),
.LT.

IF (Found) THEN