Fortran重组数据文件

时间:2017-05-30 16:59:29

标签: arrays fortran

我有一个包含4列的数据文件:

x    y    u    v

使得x和y是与值u和v相关联的坐标位置。

数据结构如此

x    y    u    v
1    1    #    #
2    1    #    #
3    1    #    #
...

但是,我想重组文件

x    y    u    v
1    1    #    #
1    2    #    #
1    3    #    #

...

fortran中是否有可以实现此目的的功能?

1 个答案:

答案 0 :(得分:1)

好吧,我从未提出过关于"漂亮,"但它应该做的工作。显然,您需要检查FORMAT语句:

      PROGRAM TEST
      REAL*8 :: U(4,4)
      REAL*8 :: V(4,4)
      INTEGER :: X, Y

      DO
         READ(*,'(2I2)',ADVANCE='NO',END=10) X,Y
         READ(*,'(2F6.1)',ADVANCE='YES',END=10) U(X,Y),V(X,Y)
      END DO

 10   CONTINUE
      WRITE(*,'(2I4,2F10.2)') ((I,J,U(I,J),V(I,J),J=1,4),I=1,4)

      END

我假设您的阵列已经正确分配。

这是我的输入文件:

$ cat test.in
 1 1    5.0  10.0
 2 1    1.3  -0.2
 3 1    5.1   0.0
 4 1   -9.1   3.0
 1 2    4.0   2.0
 2 2   14.0  -8.0
 3 2   -8.0   8.0
 4 2    4.0   9.6
 1 3    2.0   1.1
 2 3    3.4   8.0
 3 3    4.0   7.0
 4 3    4.0   4.1
 1 4    5.5   8.4
 2 4   34.1  23.0
 3 4   -4.1   4.0
 4 4    6.0   8.4

输出:

$ cat test.in | ./a.out
 1 1    5.0  10.0
 1 2    4.0   2.0
 1 3    2.0   1.1
 1 4    5.5   8.4
 2 1    1.3  -0.2
 2 2   14.0  -8.0
 2 3    3.4   8.0
 2 4   34.1  23.0
 3 1    5.1   0.0
 3 2   -8.0   8.0
 3 3    4.0   7.0
 3 4   -4.1   4.0
 4 1   -9.1   3.0
 4 2    4.0   9.6
 4 3    4.0   4.1
 4 4    6.0   8.4