【发布时间】:2018-12-04 11:02:48
【问题描述】:
我有一个包含 2 列的数据文件。比方说:
第 1 列(8,8,8,6,9),读作a。
第 2 列 (3,4,5,6,7),读作 b。
我想写一个代码检查a(i)=a(i+1)然后b=0。
所以结果应该是第一列a:(8,8,8,6,7),第二列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
【问题讨论】:
-
什么失败了?它编译吗?它运行吗?它会产生错误消息吗?它是否以错误的结果完成?
-
另外:这是您运行的实际代码吗?您的部分代码毫无意义,可能导致内存不足和失控循环。
-
我阅读你的问题的方式,
b(i) = 0如果a(i) == a(i+1)。但在这种情况下,生成的b应该是(0, 0, 5, 6, 7),因为a的第三个值与第四个不同。 -
我越是看代码,越是困惑。
i和j从未设置,您正在测试一个值是否小于自身,a和b被声明为变量,但大多数时候它们被作为数组寻址。
标签: fortran do-loops read-data