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

看板Fortran作者 (阿貓)時間15年前 (2009/08/11 18:37), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串2/4 (看更多)
※ 引述《openfire (疲憊...)》之銘言: : fortran在放置或讀取arry的順序為先從最左邊的一行 : 把同一行下的列值都讀完之後,再往右一行繼續讀 : 寫值的順序也是一樣 : 所以要在不指定的狀況下讓fortran把讀值放進你想要的位置就必須遵從以下方式 : 以3X3矩陣為例 : 11.dat內容: : aa : ba : ca : ab : bb : cb : ac : bc : cc : read 11.dat進入a(3,3) : fortran的放置方式: : aa ab ac : ba bb bc : ca cb cc : 不過如果今天11.dat的內容變更為 : aa ab ac : ba bb bc : ca cb cc : 然後在不知道矩陣大小的狀況下該怎麼寫才能正確的定義每個值到相對應的矩陣位置呢? : 使用 : do while(.not. eof(11)) : read(11,*)row : n=n+1 : enddo : allocate (a(n,n)) : 定出a的大小之後我就卡關了@@ : fortran讀檔案一次都是讀一整行 : 所以在read(11,*)的後面必須要清楚的告訴他每個值的意義 : 在知道矩陣大小的狀況下可以用read(11,*)a(i,1),a(i,1),a(i,1) : 然後配合上do i=1,3 就可以達到目的 : 可是現在矩陣大小未知的話到底該怎麼處理會比較好呢 : 想了一整個晚上都沒有想出好方法 : 還麻煩高手賜教 矩陣大小未知的話....無解 因為無法得知read後,讀取的一整行,有幾個數值 Fortran沒有相關指令可以用.... -- 猫の会社賣場 http://class.ruten.com.tw/user/index00.php?c=&m=&o=&p=&s=auto_cat -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.127.181.230

08/11 19:07, , 1F
何不寫個切割字串副程式,再把字串轉成數值陣列回傳
08/11 19:07, 1F
文章代碼(AID): #1AWKdCYR (Fortran)
文章代碼(AID): #1AWKdCYR (Fortran)