我在Fortran 95上有一个非常可怕的错误:
Fatal Error: While reading module 'list5.mod' found module version 0, expected 6
Run Code Online (Sandbox Code Playgroud)
我已经包含了我的模块的主要结构.我非常怀疑它与我的模块中的内容有什么关系,因为它给了我关于那些的错误信息,我已经能够修复它们,这意味着它能够通过我的模块很好,它只是与我使用模块的方式.也许?
MODULE list5
IMPLICIT NONE
CONTAINS
----
END MODULE
Run Code Online (Sandbox Code Playgroud)
主程序的结构如下:
PROGRAM mainlist
USE list5
IMPLICIT NONE
!Variable Declaration
INTEGER:: opt
INTEGER, PARAMETER:: maxitems=50
INTEGER:: size=0
CHARACTER(20):: itemarray(50)
INTEGER:: quantityarray(50)
INTEGER:: totalquantity, i=0
REAL:: totalprice=0, pricearray(50)=0
CHARACTER(20), DIMENSION(:)::Item
CHARACTER(20):: ItemSought
LOGICAL:: Found
INTEGER:: Location
INTEGER:: NumItems=0, SmallestItem=0
!Select statement for the menu
DO
opt=choices()
SELECT CASE (opt)
CASE(1)
size=size+1
CALL getItemData(itemarray,pricearray,quantityarray)
CASE(2)
CALL getFileItems(size,itemarray,pricearray,quantityarray)
CASE(3)
CALL pickItemRandomly …Run Code Online (Sandbox Code Playgroud) 我的 Fortran 程序可以编译,但是我收到一个奇怪的错误,叫做“总线错误”。
这是我的完整代码。我真的可以使用一些帮助。有谁知道我怎样才能摆脱这个错误并使我的程序正常工作?
我正在尝试生成一个通过随机数创建的数组,然后让该数组进行一些统计。
PROGRAM numbersgen
IMPLICIT NONE
!Variable declaration
INTEGER, DIMENSION(:,:),ALLOCATABLE::numarray
INTEGER, DIMENSION(:),ALLOCATABLE::temparray
INTEGER:: numrolls, numexps
INTEGER:: i=0, j=0
REAL:: avg=0, sdv=0, variance=0, sum=0
INTEGER:: k, min, pos, temp
PRINT*, "Enter the number of experiments to simulate: "
READ*, numexps
PRINT*, "Enter the number of rolls per experiment: "
READ*, numrolls
ALLOCATE(numarray(numexps,numrolls))
DO i=1, numexps
CALL GenerateNum(numarray, numrolls, numexps)
DO j=1, numrolls
temparray(j)=numarray(i,j)
END DO
PRINT*, "Experiment ",i
CALL Sorter(temparray, numrolls)
CALL ComputeStats(temparray, sum, avg, variance, sdv)
CALL …Run Code Online (Sandbox Code Playgroud) 使用g95编译器,我有一个错误:
Error: Operands of comparison operator '.EQ.' at (1) are LOGICAL(4)/LOGICAL(4)
Run Code Online (Sandbox Code Playgroud)
我不知道这是什么意思.我包括子程序.你有任何想法如何解决这个问题?
非常感谢你的时间.
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 …Run Code Online (Sandbox Code Playgroud) 我刚刚开始在模块上创建一个菜单功能,我遇到致命错误,错误太多.我怀疑这可能是由于一个小错误而不是多个,因为代码现在非常简单.
有人有什么想法吗?
以下是我到目前为止的情况.显然我刚刚开始,但我很惊讶为什么会出现问题.非常感谢!
另外我对模块有点新意,所以我只是好奇你能告诉我这是不是如何编译它?g95 themenu.f95 -o ba ??
谢谢.
MODULE themenu
IMPLICIT NONE
INTEGER:: choices, opt
opt=choices()
CONTAINS
INTEGER FUNCTION choices ()
INTEGER:: opt
DO
PRINT*, "1: Add an item manually"
PRINT*, "2: Add item(s) from a file"
PRINT*, "3: Add random item from list of top ten list"
PRINT*, "4: Print list with totals"
PRINT*, "5: Sort list alphabetically"
PRINT*, "6: Sort list by price"
PRINT*, "7: Write list to file"
PRINT*, "8: EXIT"
PRINT*, " "
PRINT*, "Please …Run Code Online (Sandbox Code Playgroud) fortran 95上此程序的输出显示星号而不是数字.另外,我无法按照预期的方式打印实验#; 实验1,实验2,实验3等.相反,它打印如下; 实验1,实验1,实验1.
关于如何解决这个问题的任何想法?以下是我的整个计划.
谢谢你的时间.
PROGRAM numbersgen
IMPLICIT NONE
!Variable declaration
INTEGER, DIMENSION(:,:),ALLOCATABLE::numarray
INTEGER, DIMENSION(:),ALLOCATABLE::temparray
INTEGER:: numrolls, numexps
INTEGER:: i=0, j=0
REAL:: avg=0, sdv=0, variance=0, sum=0
INTEGER:: k, min, pos, temp
.............
------
REAL, INTENT(IN):: sum
REAL, INTENT(IN):: avg, variance, sdv
PRINT*, " "
PRINT*, "Sum: ",sum
PRINT '(1X,A,F5.3)', "Average: ",avg
PRINT '(1X,A,F5.3)', "Variance: ",variance
PRINT '(1X,A,F5.3)', "Standard Deviation: ",sdv
END SUBROUTINE
END PROGRAM
Run Code Online (Sandbox Code Playgroud)