回 帖 发 新 帖 刷新版面

主题:我编的一个小程序,把1002*2的数组转换成501*4,总出问题,希望高手指点

program main
        implicit none
        integer I
        real :: ff(501,4),FT(1002,2)
        open(unit = 5, file='avdf.dat',status='old')
        
        do I=1,1002                
                read(unit = 5, fmt = *) FT(I,1:2)                
        end do

        do I=1,501
                ff(I,1)=FT(2I-1,1)
                ff(I,2)=FT(2I-1,2)
                ff(I,3)=FT(2I,1)
                ff(I,4)=FT(2I,2)
        end do

        open(unit=10,file='avdf2.dat',status='replace')
        
        Do I=1,501
                write(unit=10,fmt =100)    ff(I,1:4)
        end do
        100 format(1X,F10.2,5X,F15.2,5X,F10.2,5X,F15.2)

close(5)
pause
stop      
end program main

回复列表 (共5个回复)

沙发

这是编译后的错误提示
Compiling with Intel Fortran 9.1 C:\Program Files\Intel\Compiler\Fortran\9.1\IA32\...

ifort /nologo /Zi /Od /module:"Debug/" /object:"Debug/" /traceback /check:bounds /libs:static /threads /dbglibs /c  /Qvc8 /Qlocation,link,"C:\Program Files\Microsoft Visual Studio 8\VC\bin" "C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\Console9\Console9\Console9.f90"

C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\Console9\Console9\Console9.f90(12) : Error: Missing mandatory separating blank
                ff(I,1)=FT(2I-1,1)
--------------------------------------------^
C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\Console9\Console9\Console9.f90(12) : Error: Syntax error, found IDENTIFIER 'I' when expecting one of: .EQV. .NEQV. .XOR. .OR. .AND. .LT. < .LE. <= .EQ. == .NE. /= .GT. > ...
                ff(I,1)=FT(2I-1,1)
--------------------------------------------^
C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\Console9\Console9\Console9.f90(13) : Error: Missing mandatory separating blank
                ff(I,2)=FT(2I-1,2)
--------------------------------------------^
C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\Console9\Console9\Console9.f90(13) : Error: Syntax error, found IDENTIFIER 'I' when expecting one of: .EQV. .NEQV. .XOR. .OR. .AND. .LT. < .LE. <= .EQ. == .NE. /= .GT. > ...
                ff(I,2)=FT(2I-1,2)
--------------------------------------------^
C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\Console9\Console9\Console9.f90(14) : Error: Missing mandatory separating blank
                ff(I,3)=FT(2I,1)
--------------------------------------------^
C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\Console9\Console9\Console9.f90(14) : Error: Syntax error, found IDENTIFIER 'I' when expecting one of: .EQV. .NEQV. .XOR. .OR. .AND. .LT. < .LE. <= .EQ. == .NE. /= .GT. > ...
                ff(I,3)=FT(2I,1)
--------------------------------------------^
C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\Console9\Console9\Console9.f90(15) : Error: Missing mandatory separating blank
                ff(I,4)=FT(2I,2)
--------------------------------------------^
C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\Console9\Console9\Console9.f90(15) : Error: Syntax error, found IDENTIFIER 'I' when expecting one of: .EQV. .NEQV. .XOR. .OR. .AND. .LT. < .LE. <= .EQ. == .NE. /= .GT. > ...
                ff(I,4)=FT(2I,2)
--------------------------------------------^
compilation aborted for C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\Console9\Console9\Console9.f90 (code 1)




Console9 build failed

板凳

do I=1,501
                ff(I,1)=FT(2I-1,1)
                ff(I,2)=FT(2I-1,2)
                ff(I,3)=FT(2I,1)
                ff(I,4)=FT(2I,2)
        end do
應該改為:
        do I=1,501
                ff(I,1)=FT(2*I-1,1)
                ff(I,2)=FT(2*I-1,2)
                ff(I,3)=FT(2*I,1)
                ff(I,4)=FT(2*I,2)
        end do

3 楼

乘號不能省。

4 楼

多谢cgl_lgs大哥

5 楼

呵呵,近来叫俺啥的都有哈:)
不客气啦:)

我来回复

您尚未登录,请登录后再回复。点此登录或注册