【发布时间】:2017-10-30 13:38:21
【问题描述】:
英雄我使用的新代码。我已经尝试过了,如果我先声明了它,它就可以工作,这不是我想要的。我需要知道总行数 (n) 然后在我的模拟中使用该数字。但是,在变量声明中,我需要在读取数据之前减小 xy(n),如果这样做,代码将不会运行。
数据文件是两列随机模拟的正常数据
这样说吧
1 3
2 4
3 6
4 8
5 9
6 8
7 1
8 9
99 88
我尝试了以下代码来确定 n 但它不起作用!
program reading
implicit none
integer,allocatable :: a(:,:)
integer :: pair(2)
integer :: unit, n, io,k
!!!variable declaration
real, dimension(1:n)::x,y
integer:: T, I1, I2, I3, i, j, dist
open(2, file = 'xyBVNData_R.txt', status = 'old', action = 'read')
n = 0
DO
READ(2,*,iostat=io)
IF (io/=0) EXIT
n = n + 1
END DO
CLOSE (2)
print*, n
DO i=1,n!!!
DO j=1,n!!
dist=0.0
DIST = dist+(sqrt((x(i)-x(j))**2 + (y(i)-y(j))**2))
ENDDO
ENDDO
!!! writing and saving
Do i= 1, n
write(*,*) i, x(i)
ENDDO
end program reading
【问题讨论】:
-
您是否尝试阅读此网站?这里有很多类似的问题和答案。顺便说一句 “我不知道该怎么做才能让 fortran 在读取数据帧后弄清楚有多少行。” 不是一个问题,而是一个陈述,即使你放了一个末尾有问号。
-
比我第一次找到的重复的更多(它包含我的答案只是巧合)。如果它不适合您,我们需要您的数据文件和代码的详细信息才能给出详细的答案。
-
@VladimirF 非常感谢。我编辑了我的问题。您提到的代码是逐行读取数据,但我想要的是略有不同。
-
好吧,我的回答中确实有解决方案,但如果你想争辩说这个问题不是完全重复的,那么它可能不是。 从不使用“它不起作用”它并没有告诉我们任何有用的信息。告诉我们发生了什么。错误信息?哪些确切的消息?错误的结果?哪个确切的结果? 数据文件是什么样子的?你的行
print*,n打印了哪个数字? -
另外,请勿使用小于 10 的单元号。某些单元号是保留的。不要使用 2 号单元。使用高于 10 的单元号。