【问题标题】:Printing arrayed variables in a file in a specific format in Fortran在 Fortran 中以特定格式打印文件中的数组变量
【发布时间】:2018-05-23 15:15:00
【问题描述】:

我有两个数组。第一个是 A(3,3,100)。这意味着对于从 1 到 100 的每个 n,我都有一个由 Aij 给出的 3x3 矩阵。第二个数组 B(100) 是一个一维数组,其中 i 在每个 n 处都有值。

现在,我想在一个文件中打印 A 和 B,以便安排如下:

A11,1  A21,1  A31,1 A12,1 A22,1 A32,1 A13,1 A23,1 A33,1 B,1

A11,2  A21,2 A31,2 A12,2 A22,2 A32,2 A13,2 A23,2 A33,2 B,2

   .          .           .           .          .          >          .         .         .        .

   .          .           .           .          .          >          .         .         .        .

   .          .           .           .          .          >          .         .         .        .

A11,n A21,n A31,n A12,n A22,n A32,n A13,n A23,n A33,n B,n

我尝试使用:write(*,'(9Fw.d 1Fw.d)') A,B,其中w 是字段宽度,d 分配给小数;但它不起作用。

【问题讨论】:

  • 我想你对格式本身没有问题,但是数组元素的写入顺序,你应该能够在this other question 上构建。
  • 欢迎,请接受欢迎tour 并阅读How to Ask。请永远不要“它不起作用”。真的从来没有。而是告诉我们发生了什么。输出错了吗?看起来怎么样?有任何错误信息吗?在此处复制输出并显示详细信息。

标签: arrays formatting fortran


【解决方案1】:

您的语句将首先打印出所有 A,然后将打印出所有 B。只需用 do 循环将其分解,并在 write 语句中隐含 do 循环:

do i = 1, n
   write(*,'(9Fw.d, 1Fw.d)') ((A(row, col,i), row=1,3),col=1,3), B(i)
end do

您确定这是您想要的顺序吗? A11,1 A21,1 A31,1 ......这将是向下行。我想你会希望每一行像这样打印在一起:A11,1 A12,1 A13,1 A21,1 ..... 如果是这种情况,请交换 row=1,3),col=1,3 )

【讨论】:

  • 非常感谢!它工作得很好!是的!但也感谢您提供更多信息:)
  • @user2889824 请使用我已经链接的tour。您将了解如何接受正确答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-02
  • 1970-01-01
  • 2019-12-20
  • 2013-09-02
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
相关资源
最近更新 更多