【问题标题】:2D arrays in Fortran [duplicate]Fortran 中的二维数组
【发布时间】:2018-03-07 04:08:00
【问题描述】:

所以我刚开始使用 Fortran,但我不确定我哪里出错了。我只是想从文本文件中读取值,将其放入两个整数,然后创建一个二维数组。

program matrix
    IMPLICIT none
    integer :: a , b
    open (unit = 100, file = "test.txt")
    read(100, *) a, b
    integer, DIMENSION(a,b) :: c
    close (100)
end program matrix

我只是不断收到错误代码“符号'a'已经具有基本类型整数。

文本文件只是:

 3     3
 8     5     2
 1     9     3 
 3     4     1

简而言之,我只是想简而言之,我只是想对行中的值进行排序,然后按数字排序。

【问题讨论】:

  • 您已更改代码,数组现在的名称为c 而不是A,这导致了您所说的错误消息。您现在将收到一条不同的错误消息,即在可执行语句之后不能有变量声明。
  • 你不能在可执行代码之后有声明。你需要声明c allocatable,然后在阅读a,b后声明allocate

标签: fortran fortran90


【解决方案1】:

两件事:

Fortran 不区分大小写: Aa 相同

声明必须在执行语句之前

线

integer, DIMENSION(a,b) :: c

不能在openread 语句之后。

您可以做的是使用可分配数组。那些被声明了一个等级,但没有一个大小,并且可以稍后分配到所需的大小:

program matrix
    implicit none
    integer :: a, b
    integer, dimension(:,:), allocatable :: c
    open(unit=100, file='test.txt')
    read (100, *) a, b
    allocate(c(a,b))
    read(100, *) c
    close(100)
end program matrix

【讨论】:

  • 非常感谢,我知道我哪里出错了。我对如何打印结果感到困惑。我正在尝试类似双循环并使用 write 的方法。这是正确的方法吗?我一直没有隐式类型
  • 视情况而定,您可以使用我在那里阅读时使用的相同快捷方式。单行print '(3I4)', c 应该将整个数组打印成三列。由于矩阵也由 3 列组成,因此匹配。
猜你喜欢
  • 1970-01-01
  • 2012-05-20
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 2015-06-12
  • 1970-01-01
  • 2013-07-04
  • 2017-10-28
相关资源
最近更新 更多