我有2列的数据文件。比方说:
第1列VC1 = Table View
VC2 = New VC
,将其读为(8,8,8,6,9)
。
第2列a
,将其读为(3,4,5,6,7)
。
我想编写代码检查b
是否a(i)=a(i+1)
。
因此结果应在第1列为b=0
:a
,在第2列为(8,8,8,6,7)
应该是b
。
我尝试过但是失败了:
(0,0,0,6,7)
答案 0 :(得分:0)
您的程序可以是这样的:
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
注意:
您将a
和b
声明为标量,然后使用i
对其进行索引,并通过将a(5), b(5)
声明为数组来解决此问题。 do ..
中缺少循环索引,它应显示为do i = ..
。最后,条件应该为if (a(i-1) == a(i)) b(i-1) = 0
,因为您只能在读取值之后才比较它。