毕设用了fortran,本人小白一个,程序出了问题,求大神指点。
C:\Users\t\Desktop\reflectnew\reflect3.f90(20) : Error: Constants and expressions are invalid in read-only I/O lists.
read(28,*)i*dx,j*dx,p(i,j),u(i,j),temp,under,seeds(i,j)
---------------------------^
C:\Users\t\Desktop\reflectnew\reflect3.f90(20) : Error: Constants and expressions are invalid in read-only I/O lists.
read(28,*)i*dx,j*dx,p(i,j),u(i,j),temp,under,seeds(i,j)
以下为原程序
implicit real*8(a-h,o-z) parameter (nmax=3510,nmay=453)
dimension p(0:nmax+1,0:nmay+1)
dimension u(0:nmax+1,0:nmay+1)
dimension pa(0:nmax+1,0:nmay+1)
dimension ua(0:nmax+1,0:nmay+1)
dimension seeds(0:nmax+1,0:nmay+1)
dimension seedsa(0:nmax+1,0:nmay+1)
open(28,file='movefile.dat') open(29,file='movefiletw.dat')
write(29,*)'VARIABLES = "x", "y", "phi", "U", "temp","DT","Seeds"'
n_maxx=3500
n_maxy=nmay
dx=0.8d0
write(29,*)'ZONE I=',(n_maxx+1)/4+1,',J=',(n_maxy+1)/4+1 do j=0,n_maxy/3+1,4
do i=0,n_maxx+1,4
read(28,*)i*dx,j*dx,p(i,j),u(i,j),temp,under,seeds(i,j)
enddo
enddo
do j=0,n_maxy/3+1,4
do i=0,n_maxx+1,4
pa(i,j)=p(i,j)
ua(i,j)=u(i,j)
seedsa(i,j)=seeds(i,j)
write(29,66)i*dx,j*dx,pa(i,j),ua(i,j),temp,under,seedsa(i,j)
enddo
enddo
do j=n_maxy/3,n_maxy*2/3+1,4
do i=0,n_maxx+1,4
pa(i,j)=p(i,302-j)
ua(i,j)=u(i,302-j)
seedsa(i,j)=seeds(i,302-j)
write(29,66)i*dx,j*dx,pa(i,j),ua(i,j),temp,under,seedsa(i,j)
enddo
enddo
do j=n_maxy*2/3,n_maxy+1,4
do i=0,n_maxx+1,4
pa(i,j)=p(i,j-302)
ua(i,j)=u(i,j-302)
seedsa(i,j)=seeds(i,j-302)
write(29,66)i*dx,j*dx,pa(i,j),ua(i,j),temp,under,seedsa(i,j)
enddo
enddo
66 format(f9.4,1x,f9.4,1x,f7.4,1x,f7.4,1x,f8.4,1x,f10.4,1x,f7.4)
end
我想读 i * dx , j * dx ,这是文件的第一和第二列
movefile这个文件是以 “write(28,66)i*dx,j*dx,p(i,j),u(i,j),temp,under,seeds(i,j)”的方式存储的,如果想读取该文件,该怎么设置呢?
你不可能读取 i * dx , j * dx
逻辑上就说不通。文件里只有一个数,你怎么能让 i * dx 等于这个数呢?你让编译器怎么处理 i ,怎么处理 dx ?
读取出来的数据,只能存放在某个变量里,不能是一个表达式。
假如数据是 31,你让 31 = i * dx 这怎么操作呢?
你可以让 31 = i,也可以让 31 = dx,但不能让 31 = i * dx
再举例说,你可以让程序把 5*6 的结果写到黑板上,但不能让程序去黑板上读“ 5*6 ”
抱歉问下,我这个Fortran程序出了什么问题啊?
在主程序里面,没有对SE类型进行说明。解决办法:在主程序头部增加一行,integer(8) :: SE 如图:这样就能编译通过了。不过,需要指出的是,se=10*k**m的值已经远远超出integer(8)的范围,运行结果为一个负数,实际上是整数溢出了。用对数的方法计算,可以得到,se=5.5595056173846143166 *10^7520388...
求帮忙解决fortran语言 程序运行时出现的问题
操作“File——Close Workspace”,“File—>Open”打开你的这个for程序,再重新编译,执行“Build—>Compile—>Build—>Execute”,应该就行了吧。
code::blocks编译fortran时出现以下的问题,求大神指导
1.if 语句没有写 endif if((a(j)-a(i))>t) then write(*,*) a(i)end if 2.如果去掉 if 出现错误。请给出你的 qd_6801_m.TXT 文件的内容。list-directed I\/O syntax error 通常表示数据文件中存在一些干扰的字符,比如你读整型 integer 数组,而遇到了类似:3.2abc 这样的数据,这样...
Fortran运行时出现生成错误是为什么?
第一张图片说明,你当前的程序存在错误(通常是语法错误),可能是你刚改过。这里不要点击是,而要点否,点是的话,就会按照上一次正确运行的程序来走,而不是你正在弄的这一版程序。点否的话,就可以看到现在这一版程序出现的问题了
fortran调试过程中 出现这样的错误 该怎么做
1. 首先要找到程序出错的地方,因为程序提示sqrt计算出错,所以你可以在程序里面搜一搜哪里使用了开方运算,然后在这之前和之后设置一些记号,例如 write(*,*) 'aaa'write(*,*) 'bbb'等等,根据这些输出是否执行来判断程序执行到哪一步出错 2. 跟踪变量的值的变化,比方说你检测到变量x的值变成了...
fortran中遇到的问题,急,请高手指点,谢谢
这是一个常规错误。这表示你的数据文件。11.txt 中数据量不能满足你的程序需要。比如,数据中有2行,但是你的代码需要3行或更多。
...运行时总是提醒这个错误Compiling Fortran...
参数不对,无效参数,看一下你后面用的的参数里面是不是又没有声明过的。fortran中代码里出现的参数必须要经过声明,没有声明就无法识别。
急!!!求助FORTRAN读取文件时出现input conversion error问题
一定是格式问题。Fortran 本身规定了各种读取方法。文本,二进制,都能读取。理论上,任何文件都可以读取。但是,你的文件必须与代码的要求一致!!!这是关键。end of file during read 的意思是:遇到了文件尾端。这可能有两种:1.代码里读得太多了。比如你想读10行,但是代码写成了读11行,于是后面...
关于Fortran,运行的时候提示错误。
这个估计是你安装的时候没有设置环境变量引起的。环境变量让集成开发环境能够找到编译器(DF.exe)的位置,无法执行的话,多半是没有设置环境变量引起的。重新安装一次编译器吧,记得询问是否设置环境变量时,选择 Yes 补充,我知道,你没有编译成功,EXE 没有生成,直接运行,当然是文件不存在了。
fortran常见错误及其原因
在Fortran编程中,一些常见错误可能会阻碍你的程序正常运行。以下是几个典型问题及它们的可能原因:1. Incrementally linked image - Program Execution Error: 当遇到PC correlation issue时,可能会导致编译中断。这可能源于试图访问未授权的虚拟地址,或者内存越界或参数不匹配导致的数据错误。为了解决,建议...