私は文字と実数の両方を含む行列を持っています。この行列を読み込むプログラムが必要です(それ自体で次元を見つける)。私の行列の次元のために私が得たこのコード(3,2)で行列の次元を見つけるには?
a b 13 15.5 13.2
c d 16 16.75 19
e f 19.2 12.2 18.2
:
! A fortran95 program for G95
Program Project2nd
implicit none
character(len=40), allocatable :: a(:,:)
integer i,j,k,n,m,l,st
character(len=40) d
n=0; m=1; j=1;
open(10,file=&
'/Users/dariakowsari/Documents/Physics/Programming/Fortran95-Projects/Project2nd/input.txt', &
IOstat=st)
do while (st == 0)
read(10,*,IOstat=st) d
n=n+1
end do
st=0
do j=1,m
do while (st == 0)
allocate(a(1,m))
read(10,*,IOstat=st) (a(1,j),j=1,m)
m=m+1
deallocate(a)
end do
print*, n,m
end
はここに私の行列である:ここに私のコードです。
あなたのコードは、実際には3つの行数を数えます。 mは1に初期化され、iostatエラー(単にファイルの終わりである)にかかわらず2番目のループでインクリメントされるため、mに対して2が得られます。ちょっとしたことですが、あなたのopenステートメントでiostatを指定してから、値をチェックすることは何もしません。 – agentp
ファイルを開く前にファイルの内容について何を知っていますか?それは常に2つの(別々の)1文字の要素の後に3つの(数字の、実数の)要素が続く 'n '(未知の)行で構成されていますか? –
@ High Performance Mark我々は行列に文字と整数の両方が含まれていることを知っています。文字列とm列の整数を含むn列を持つことがあります。 –