Re: [请益] FORTRAN do loop 在某问题上的写法

楼主: py94g (...)   2012-05-07 22:34:01
再次感激FORTRAN版上的大侠相助解决了这个问题。
档名testyyy.dat内容为3行10列的数据分成上下两组。
以下是程式:
PROGRAM main
IMPLICIT NONE
INTEGER*4::i
INTEGER*4::M,N
REAL*8,ALLOCATABLE::POINT(:,:)
CHARACTER*11::filename
N=10
ALLOCATE( POINT(3,N) )
OPEN(UNIT=323, FILE='testyyy.dat')
READ(323,*) POINT
CLOSE(323)
WRITE(*,"(<N>(1X,F8.0,1X,F8.5,1X,F15.5,/))") POINT
10 FORMAT(1X, 3(3F10.5)) ! 输出的档案格式 Raw data。
Do i = 1,N ! 从第一个数据开始读到最后一个。
WRITE(*,10) POINT(1,i), POINT(2,i), POINT(3,i)
enddo ! 读档案结束。
C 以下开始分组
M=N/2
DO i=1,M
WRITE(filename,"('test_',I6.6)") i
OPEN(UNIT=323,FILE=filename)
WRITE(323,10) POINT(:,(i-1)*2+1:i*2)
CLOSE(323)
ENDDO
C 分组结束
Stop
End
※ 引述《py94g (...)》之铭言:
: 大家好,我想请教一个对我来说蛮困难的问题
: 我要读一个档案,档名testyyy.dat,档案内容是3行10列的数值。
: 档案内容如下:
: 1 11 -0.1
: 2 12 -0.2
: 3 13 -0.3
: 4 14 -0.4
: 5 15 -0.5
: 6 16 -0.4
: 7 17 -0.3
: 8 18 -0.2
: 9 19 -0.1
: 10 20 -0.1
: 以下程式可以把档案读出并列在萤幕上:
: Dimension POINT(3, N) ! 设定矩阵维度,3行N列,N=10。
: 10 FORMAT(1X, 3(3F10.5)) ! 输出的档案格式 Raw data。
: C 读档案,把档案中的数值填入建立POINT(3,N)的矩阵中。
: OPEN(323, FILE='testyyy.dat') ! 把要读入的档案档名+路径设定好。
: READ(323,*) POINT ! 读入。
: Do i = 1,N ! 从第一个数据开始读到最后一个。
: WRITE(*,10) POINT(1,i), POINT(2,i), POINT(3,i)
: enddo ! 读档案结束。
: 接着,我要把内容分成两个部分并输出。
: 1 11 -0.1
: 2 12 -0.2
: 3 13 -0.3
: 4 14 -0.4
: 5 15 -0.5
: 输出档案a.dat
: 6 16 -0.4
: 7 17 -0.3
: 8 18 -0.2
: 9 19 -0.1
: 10 20 -0.1
: 输出档案b.dat
: Do k = 1,5 ! 第一组1~5列
: WRITE(*,10) POINT(1,k), POINT(2,k), POINT(3,k)
: enddo
: WRITE(*,*)
: Do j = 6,10 ! 第二组6~10列
: WRITE(*,10) POINT(1,j), POINT(2,j), POINT(3,j)
: enddo
: 真正的问题是我的数据是3行1000000列,
: 依序由上到下分成1000组,每一组挑出一个极小值(这简单可以自己做)。
: 如果依照上面的写法是不行的,想了好几天只好来这里求助高手给我点提示。
: 感恩

Links booklink

Contact Us: admin [ a t ] ucptt.com