【问题标题】:Outputting the rows from an (ixj) array into individual (5xj/5) arrays in a text file将 (ixj) 数组中的行输出到文本文件中的单个 (5xj/5) 数组中
【发布时间】:2013-03-07 21:11:06
【问题描述】:

在我正在编写的程序中,我创建了一个已分配的最终产品数组 AFT(n,92)。在我的输出中,我想将每一行呈现为它自己的表格,5 列宽。

所以在这种情况下,它将是 n 个 19 行 X 5 列的单独表,最后一行只有 2 个值。我尝试将其作为一个 do 循环来执行,如下面的代码片段所示,但输出只是一个长列。我不知道从这里去哪里。

DO i=1,n
    WRITE(4,800) t(i), ' HHMM LDT'   !Writes the table header using an array which holds the corresponding time value
    800 FORMAT(14, A9)
    DO j=1,92
        WRITE(4,900) AFT(i,j)
        900 FORMAT(5ES23.14)
    END DO
END DO

我相信这种情况正在发生,因为由于使用循环,写入命令是针对每个 j 单独执行的,但是当我尝试提出另一种方法时,我对 FORTRAN 的缺乏经验让我陷入了空白。

【问题讨论】:

    标签: arrays io fortran


    【解决方案1】:

    是的,每个 write 语句都会产生一行文本输出。如果您希望多个项目包含在同一输出记录中,则必须将它们包含在 write 语句中。如果要包含数组的一部分,可以使用以下技术:

    do i=1, N
       write (*, *) (array (i,j), j=1, 5)
    end do
    

    do i=1, N
       write (*, *) array (i, 1:5)
    end do
    

    第一个是使用隐含的 do 循环,第二个是数组部分。

    【讨论】:

    • 我使用 j=1,92 使用隐含的 do 选项修改了我的代码,它起作用了。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-13
    • 2018-07-31
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    相关资源
    最近更新 更多