【问题标题】:Fortran Getting inputs from a fileFortran 从文件中获取输入
【发布时间】:2022-01-09 06:57:57
【问题描述】:

我有一个 Fortran 代码,它从用户那里获取整数,使用冒泡排序按降序对它们进行排序,然后将其写入文件中。但是,一开始,我必须从文件中获取整数,而不是从用户那里获取整数。我怎样才能做到这一点?请你帮助我好吗?谢谢。

PROGRAM project
   IMPLICIT NONE
   INTEGER array(1000),t,p,c 
   PRINT*,"Enter 1000 element array"
   READ*,array 
   c=1
   OPEN(UNIT=25,FILE="sorted.txt")
   DO p=1,999
      DO c=1,999
         IF (array(c)>array(c+1)) then 
           t=array(c)
           array(c)=array(c+1)
           array(c+1)=t
         ENDIF
      ENDDO
   ENDDO
   WRITE(98,*) array
   CLOSE(98)
   PRINT*,array(2:999)
END PROGRAM

【问题讨论】:

  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: file fortran bubble-sort


【解决方案1】:

在我开始之前,您打开文件以将输出写入单元 25:

OPEN(UNIT=25,FILE="sorted.txt")

但是你写并关闭了第 98 单元:

WRITE(98,*) array
CLOSE(98)

这是您的问题中的错误吗,否则您可能需要调查。

也就是说,如果你是从 bash 这样的 shell 运行程序,最简单的方法是使用输出重定向:

$ cat unsorted.txt > sort.exe

这样您就不必更改代码中的任何内容。

如果您不想这样做,则需要在程序中打开并读取文件:

open(unit=24, file='unsorted.txt', action='READ', &
     status='OLD', form="FORMATTED")
read(24, *) array
close(24)

这假定带有未排序数据的文件恰好包含 1000 个整数,没有其他任何内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 2019-06-04
    • 2019-07-06
    • 1970-01-01
    • 2012-06-11
    • 2019-02-16
    相关资源
    最近更新 更多