比较Fortran中的两行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比较Fortran中的两行相关的知识,希望对你有一定的参考价值。

我有一个包含2列的数据文件。让我们说: 第1栏(8,8,8,6,9),读作a。 第2栏(3,4,5,6,7),读作b。 我想写一个代码检查a(i)=a(i+1)然后b=0

所以结果应该是第1列为a(8,8,8,6,7),第2列为b应为(0,0,0,6,7)

我尝试过但失败了:

program read2cols
  implicit none

  integer ::ios,i,j
  real a,b
  open(file='8081.txt', unit=22, status='old', action='read')

do 
   read(22,*,iostat=ios) a(i),b(j)
   if(a(i)<a(i))b=0 

       if(ios/=0) exit 
     print*,a,b 
 enddo
  close(22)


end program read2cols
答案

你的程序可以是这样的:

program read2cols
  implicit none

  integer :: ios, i, j
  real :: a(5), b(5)
  open(file='8081.txt', unit=22, status='old', action='read')

  read(22, *, iostat = ios) a(1), b(1)
  do i = 2,5
    read(22, *, iostat = ios) a(i), b(i)
    if (ios /= 0) exit
    if (a(i-1) == a(i)) b(i-1) = 0
  end do

  print *, a, b
  close(22)

end program read2cols

输出:

   8.00000000       8.00000000       8.00000000       6.00000000       9.00000000       
   0.00000000       0.00000000       5.00000000       6.00000000       7.00000000

笔记:

你将ab声明为标量,然后使用i对它们进行索引,通过将a(5), b(5)声明为数组来解决此问题。在do ..中缺少循环索引,它应该读取do i = ..。最后,条件应该是if (a(i-1) == a(i)) b(i-1) = 0,因为你只能在读取后比较一个值。

以上是关于比较Fortran中的两行的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL 中排序时如何比较同一表中的两行?

如何比较同一表中的两行并使用存储过程返回数据作为响应

如何在 Java 中的两行代码之间创建延迟? [复制]

如何理解这段代码片段中的两对括号?

R:仅当同一列中的两行中的值为真时才将值添加到 [row,column]

如何合并数据框熊猫中的两行