看板 Fortran 關於我們 聯絡資訊
不好意思又打擾了... 現在是這樣的我有一組數據示意如下 參考原子編號: 與此原子相對應的其他原子編號 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
gilocustom:你最後提出來的構想是可行的,實際做法就同你字面所述, 03/01 22:53
gilocustom:前提是記憶體足夠。 03/01 22:54
pttlyt:!!好的我研究看看怎麼做! 03/01 22:57
gilocustom:也可以考慮用type自訂結構符合需求的變數。 03/01 23:02
pttlyt:阿...我看彭那本書還是沒有很懂type 能示範一下簡單例子嗎 03/01 23:28
pttlyt:QAQ 03/01 23:28
gilocustom:書裡面應該有附範例吧?若看不懂不妨提出來討論。 03/01 23:55
書裡的範例是這樣的 (第四章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)
gilocustom:以範例來說,只要將自訂型態person的內容設為可配置陣 03/02 00:54
gilocustom:列/指標陣列,再將變數a宣告為person型態的可配置陣列 03/02 00:55
gilocustom:/指標陣列,就可以廣義地在同個變數下分別配置不同維 03/02 00:55
gilocustom:度。 03/02 00:55
gilocustom:建議先採用比較單純的做法(配置足夠大的陣列), 03/02 01:03
gilocustom:確定可行但仍有記憶體不夠用之虞再考慮其他做法。 03/02 01:03
感謝G大指教QQQ 我用最笨的方法寫出來了 編了註解不過真的很醜超多迴圈... 不過至少是統一了數據格式與數量... code: http://imgur.com/AsMhoNB,QkCh7KS#0 部分結果: http://imgur.com/AsMhoNB,QkCh7KS#1 如果有什麼比較好的想法再麻煩指教! 感謝!!!! ※ 編輯: pttlyt 來自: 165.123.137.235 (03/02 01:19)