[問題] 請問要怎麼把不同個數數據寫入一個矩陣中

看板Fortran作者 (讓血液重新滾動)時間10年前 (2014/03/01 22:31), 編輯推噓0(0013)
留言13則, 2人參與, 最新討論串1/2 (看更多)
不好意思又打擾了... 現在是這樣的我有一組數據示意如下 參考原子編號: 與此原子相對應的其他原子編號 1: 2 5 8 2: 5 9 13 15 16 18 ... 以此類推 我試著想要把他寫入一個矩陣中 (e.g 同一列中第一行紀錄參考原子編號,其他行紀錄對應原子編號 但問題是我沒辦法得知這個未知的矩陣大小.... 我試過但似乎allocatable的矩陣無法滿足這樣的狀況 (或是可能我操作上有問題... 不知道有沒有什麼方法可以做這樣的事情 或是定義一個絕對超過所需大小的的矩陣 把不足的地方補"0"之類的? ※目前進度有點笨Orz 不過好像有一線曙光這樣... 小弟不才寫了很醜八怪的程式碼= = 決定再產生數據的時候每過一個迴圈讓counter+1 看了之前產生的參差不齊數據最多不超過 25 個 於是我設一個邏輯迴圈當 if (counter<25) do i=1,(25-counter) write(*,*)0 end do end if 於是我整個程式碼醜到爆炸充滿迴圈....... 感謝各位前輩們 好多新手問題SOR... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 165.123.137.235

03/01 22:53, , 1F
你最後提出來的構想是可行的,實際做法就同你字面所述,
03/01 22:53, 1F

03/01 22:54, , 2F
前提是記憶體足夠。
03/01 22:54, 2F

03/01 22:57, , 3F
!!好的我研究看看怎麼做!
03/01 22:57, 3F

03/01 23:02, , 4F
也可以考慮用type自訂結構符合需求的變數。
03/01 23:02, 4F

03/01 23:28, , 5F
阿...我看彭那本書還是沒有很懂type 能示範一下簡單例子嗎
03/01 23:28, 5F

03/01 23:28, , 6F
QAQ
03/01 23:28, 6F

03/01 23:55, , 7F
書裡面應該有附範例吧?若看不懂不妨提出來討論。
03/01 23:55, 7F
書裡的範例是這樣的 (第四章ex0434.F90) type :: person character(len=30) :: name !人名 integer :: age !年齡 (其餘身高體重地址都還是integer & char- 就不多打了) end type person type(person) :: a !聲明一個person類型變量 這樣的結果讓使用者可以輸入這些量 (同理推測可以藉由讀取檔案得到這些量 紀錄就透過 read(*,*)a%name 我之前處理別的狀況下(要同時儲存integer 與 real的兩種類型的值也曾嘗試過 這樣子的情況下我不理解的是 這樣儲存下來的資料長什麼樣子@@ 可以像我現在這邊問題中存成一個矩陣嗎? (這樣問題聽起來是不是很蠢QQ 可是真的很沒有sense 感謝! ※ 編輯: pttlyt 來自: 165.123.137.235 (03/02 00:07) ※ 編輯: pttlyt 來自: 165.123.137.235 (03/02 00:42)

03/02 00:54, , 8F
以範例來說,只要將自訂型態person的內容設為可配置陣
03/02 00:54, 8F

03/02 00:55, , 9F
列/指標陣列,再將變數a宣告為person型態的可配置陣列
03/02 00:55, 9F

03/02 00:55, , 10F
/指標陣列,就可以廣義地在同個變數下分別配置不同維
03/02 00:55, 10F

03/02 00:55, , 11F
度。
03/02 00:55, 11F

03/02 01:03, , 12F
建議先採用比較單純的做法(配置足夠大的陣列),
03/02 01:03, 12F

03/02 01:03, , 13F
確定可行但仍有記憶體不夠用之虞再考慮其他做法。
03/02 01:03, 13F
感謝G大指教QQQ 我用最笨的方法寫出來了 編了註解不過真的很醜超多迴圈... 不過至少是統一了數據格式與數量... code: http://imgur.com/AsMhoNB,QkCh7KS#0
部分結果: http://imgur.com/AsMhoNB,QkCh7KS#1
如果有什麼比較好的想法再麻煩指教! 感謝!!!! ※ 編輯: pttlyt 來自: 165.123.137.235 (03/02 01:19)
文章代碼(AID): #1J4Uylim (Fortran)
文章代碼(AID): #1J4Uylim (Fortran)