作者mouseforlove (我是瓜呆)
看板Fortran
标题Re: [问题] 程式码请教
时间Wed Feb 15 11:22:28 2012
※ 引述《psallen (psallen)》之铭言:
: 小弟是fortran新手,最近在看一段程式码要将其改成c语言,
: 但目前有一段一直看不懂想请教版上的高手能否帮忙看看,
: 感激不尽!
: 撷取片段程式码如下:
: PARAMETER (M1=18,N1=2**M1)
: implicit real*8 (a-h,o-z)
: parameter (mtot=1000000)
: REAL*8 X(mtot),vvz(mtot,6),xout(mtot,6),xx(n1),xall(n1,6)
: complex*16 xfl(n1)
: c**
: c** nn=number of input responses
: c** T=period
: c**
: write(*,*) ' [1]dt (in inp1) [2] Nterms (1-6) [3] M (13=16s)'
: read (*,*) edt,nterm,M
read的( )内第一个位置指的是读取位置,*表示从萤幕输入读取
第二个位置指的是读取格式,*表示自由格式,上行write也是如此
: N=2**M
: if (edt>10.0) edt=1.0/edt
: do i=1,mtot
: read (1,*,iostat=kk) ajj,(vvz(i,j),j=1,nterm)
上行read说要从编号为1的档案中读取,不晓得前面是否有open(1,...)的
程式码? 然後使用自由格式读取,iostat是指当读资料没问题时为0,如
果读取过程有问题通常是-1
: if (kk.ne.0) exit
上行指如果读取有问题就跳出回圈,也可使用在资料结束的时候跳出回圈
: enddo
: write(*,*) ' dt=',edt
: 看不懂的地方是倒数第四行read那行代表的意思?
: 因为我执行过第一次的write和read会显示出来,而第四行的read却不会显示出来
第四行read不是从萤幕读取,所以不会显示
: 要我输入东西,之前留下的执行档事会在我输入完edt,nterm,M的值时要我输入input档,
: 但我撷取出来这段产生的执行档却输入完edt,nterm,M的值时就跳到最後一个write了,
: 麻烦大家了
: 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.36.198
1F:推 psallen:感谢mo大的回答,有稍微懂了 02/15 11:50
2F:→ psallen:read (1,*,iostat=kk)这行原程式码前面并没有open(1,...) 02/15 11:52
3F:→ psallen:的指令,但我拿之前此程式的执行档执行时,在我输入完 02/15 11:53
4F:→ psallen:edt,nterm,M这三个值时,dosbox会显示一行 02/15 11:54
5F:→ psallen:File name missing or blank-please enter file name 02/15 11:55
6F:→ psallen:然後我就在这行出现後输入我的input档就可以继续运作 02/15 11:55
7F:→ psallen:但我这次重新编译程式码时却不会出现File missing这个提示 02/15 11:56
8F:→ psallen:不知道是哪边出了问题,可以请mo大在帮我看看吗?谢谢 02/15 11:57
9F:推 psallen:有办法变成之前这样在萤幕上输入INPUT档名吗? 02/15 12:18
10F:→ mouseforlove:请问你重新编译的时候,有修改什麽内容吗? 02/15 14:30
11F:推 psallen: 不好意思这我也不知道,因为我以前都一直用exe档做运算而 02/15 16:19
12F:→ psallen:已,程式码是人编写的,所以也不太清楚是否有改过 02/15 16:20
13F:→ mouseforlove:这样我不确定是不是程式里面有给资料的档名了... 02/15 17:12
14F:推 psallen:好那我再研究看看 谢谢 02/16 10:24