Re: [問題] 未知大小矩陣讀取的問題

看板Fortran作者 (阿貓)時間15年前 (2009/08/11 23:31), 編輯推噓1(102)
留言3則, 1人參與, 最新討論串4/4 (看更多)
※ 引述《openfire (疲憊...)》之銘言: : 我嘗試使用terryys版友的建議寫出來了 : 在這邊野人獻曝一下 : program main : implicit none : integer n,i : character row : real,allocatable:: a(:,:) : n=0 !先讀取檔案判斷矩陣階數 : open (11,file='matrix.txt',status='old') : do while(.not. eof(11)) : read(11,*) row : n=n+1 : enddo : allocate ( a(n,n) ) : rewind(11) !將讀取位置回到檔案開頭 : do i=1,n !將檔案讀進矩陣中 : read(11,*) a(:,i) : 11 format (I3) : enddo : write(*,*)'The input matrix a =' !先在螢幕上print出讀取的檔案狀況 : write(*,*) a !以確認讀取無誤 : end : 不過老實說我對於a(:,i)的意思還並不是很了解 : 剛剛翻了一下書也沒找到這個指令的詳細說明 : 還是請高手們給點方向吧! 感謝 : 再次跟提供意見的板友們致謝^^ program main implicit none integer n,i,j character row real*8,allocatable:: a(:,:) n=0 !先讀取檔案判斷矩陣階數 open (11,file='test.txt',status='old') do while(.not. eof(11)) read(11,*)row n=n+1 end do allocate ( a(n,n) ) rewind(11) !將讀取位置回到檔案開頭 do i=1,n !將檔案讀進矩陣中 read(11,*) a(i,:) end do do i =1,n do j= 1,n write(*,"(a2,i1,a1,i1,a2,f5.3)")'a(',i,',',j,')=',a(i,j) !以確認讀取無誤 end do end do end program 修改了你的程式碼,我覺得這樣寫比較對....= = 可是按照你提出的方法,只能用於row=column的方陣 對於row,column不相等的矩陣,還是難以抓出.... -- 猫の会社賣場 http://class.ruten.com.tw/user/index00.php?c=&m=&o=&p=&s=auto_cat -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.127.181.230 ※ 編輯: UDP 來自: 140.127.181.230 (08/12 00:31)

08/12 02:48, , 1F
恩..的確如此,row,column不相等的方陣再未知情況下應該
08/12 02:48, 1F

08/12 02:49, , 2F
是如您所言 無解的樣子Orz
08/12 02:49, 2F

08/12 02:50, , 3F
Semisphere提供的意見我正在嘗試中 搞不好有機會弄得出來
08/12 02:50, 3F
文章代碼(AID): #1AWOxOoC (Fortran)
文章代碼(AID): #1AWOxOoC (Fortran)