我想从输入文件中读取维度(n,n)的矩阵A
,n
是一个变量且n <= 50。为了测试,我采用了一个示例矩阵:
5.0 6.0 7.0
4.0 3.0 8.0
1.0 4.0 2.0
我希望使用以下代码以相同的格式阅读它:
但是当我编译它时,我收到了错误:
在文件partial_pivot.f90的第15行(unit = 9,file ='gaussj.inp') Fortran运行时错误:文件结束。
如何解决这个问题?
program gaussj
implicit none
integer::i,j,n
integer,parameter::nmax=50
real,dimension(nmax,nmax)::A
open(unit=9,file='gaussj.inp',status='old')
n = 0
do i = 1,nmax
n = n+1
read(9,*)(A(i,j),j = 1,nmax)
end do
close(9)
write(25,*)((A(i,j),j=1,n),i=1,n)
end program
答案 0 :(得分:1)
在这种情况下,如果你想假设它是一个正方形数组,(并且文件中没有其他内容)你可以通过计算行来获得维度。
implicit none
integer i,n,stat
real x
real,allocatable::a(:,:)
open(20,file='test.dat')
n=-1
stat=0
do while(stat == 0)
n=n+1
read(20,*,iostat=stat)x
enddo
write(*,*)n
allocate(a(n,n))
rewind(20)
read(20,*)a
a=transpose(a)
do i=1,n
write(*,*)A(i,:)
enddo
end