Fortran 量刑

Fortran 量刑,fortran,counting,sentence,Fortran,Counting,Sentence,我正在尝试编写一个代码来获得以下格式 filein(i)='box_01_step_u000000000000j.pdb' 输出应如下所示: filein(1)='box_01_step_00000000000000.pdb' filein(2)='box_01_step_00000000000020.pdb' filein(3)='box_01_step_00000000000040.pdb' filein(4)='box_01_step_00000000000060.pdb' filein

我正在尝试编写一个代码来获得以下格式

filein(i)='box_01_step_u000000000000j.pdb'

输出应如下所示:

filein(1)='box_01_step_00000000000000.pdb' 
filein(2)='box_01_step_00000000000020.pdb'
filein(3)='box_01_step_00000000000040.pdb'
filein(4)='box_01_step_00000000000060.pdb'
filein(5)='box_01_step_00000000000080.pdb'
filein(6)='box_01_step_00000000000100.pdb'
filein(7)='box_01_step_00000000000120.pdb'
filein(8)='box_01_step_00000000000140.pdb'
filein(9)='box_01_step_00000000000160.pdb'
filein(10)='box_01_step_00000000000180.pdb'
filein(11)='box_01_step_00000000000200.pdb'
我的代码是

program main 
implicit none 
 integer :: i,n,j
 character(4):: filein,box,step,pdb
 do i = 0, 501
    open (300,file='in')
 end do
 j=0
 do i = 0, 501   
  j=j+20
  WRITE(300,*) "'filein'",'"("',(i),'")"',"'='","'box_01_step_'","'000000000000'",j,"'.pdb'"
 enddo
 close (300)
end program
我得到

 'filein'"("           0 ")"'=''box_01_step_''000000000000'          20 '.pdb'
 'filein'"("           1 ")"'=''box_01_step_''000000000000'          40 '.pdb'
 'filein'"("           2 ")"'=''box_01_step_''000000000000'          60 '.pdb'
 'filein'"("           3 ")"'=''box_01_step_''000000000000'          80 '.pdb'
我怎样才能做到

filein(1)='box_01_step_00000000000000.pdb' 
filein(2)='box_01_step_00000000000020.pdb'
filein(3)='box_01_step_00000000000040.pdb'
  • 要从1而不是0开始i值,请使用起始值1而不是0

  • 要从0而不是20开始计算j值,请在输出之后而不是之前进行加法,或者不使用单独的变量j,只需从i计算它

  • 不要打开文件502次;一次就够了

  • 要将j转换为带前导零的十进制数,目前最简单的方法是使用带
    Iw.m
    说明符的格式化输出,而格式化输出也是一种更简单的方法,可以完成其余的工作

节目:

program SO44379759
  implicit none
  integer :: i
  open(300,file='in')
  ! j=0
  do i=1,501
    ! j=j+20
    write(300,'(a,i0,a,i14.14,a)') "filein(",i,")='box_01_step_",(i-1)*20,".pdb'"
  end do
  close(300)
end program
输出:

filein(1)='box_01_step_00000000000000.pdb'
filein(2)='box_01_step_00000000000020.pdb'
filein(3)='box_01_step_00000000000040.pdb'
filein(4)='box_01_step_00000000000060.pdb'
filein(5)='box_01_step_00000000000080.pdb'
filein(6)='box_01_step_00000000000100.pdb'
filein(7)='box_01_step_00000000000120.pdb'
filein(8)='box_01_step_00000000000140.pdb'
filein(9)='box_01_step_00000000000160.pdb'
filein(10)='box_01_step_00000000000180.pdb'
filein(11)='box_01_step_00000000000200.pdb'
filein(12)='box_01_step_00000000000220.pdb'
filein(13)='box_01_step_00000000000240.pdb'
filein(14)='box_01_step_00000000000260.pdb'
filein(15)='box_01_step_00000000000280.pdb'
filein(16)='box_01_step_00000000000300.pdb'
filein(17)='box_01_step_00000000000320.pdb'
filein(18)='box_01_step_00000000000340.pdb'
filein(19)='box_01_step_00000000000360.pdb'
filein(20)='box_01_step_00000000000380.pdb'

非常感谢戴夫·汤普森