作者pttlyt (讓血液重新滾動)
看板Fortran
標題[問題] 請問要怎麼把不同個數數據寫入一個矩陣中
時間Sat Mar 1 22:31:06 2014
不好意思又打擾了...
現在是這樣的我有一組數據示意如下
參考原子編號: 與此原子相對應的其他原子編號
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
1F:→ gilocustom:你最後提出來的構想是可行的,實際做法就同你字面所述, 03/01 22:53
2F:→ gilocustom:前提是記憶體足夠。 03/01 22:54
3F:→ pttlyt:!!好的我研究看看怎麼做! 03/01 22:57
4F:→ gilocustom:也可以考慮用type自訂結構符合需求的變數。 03/01 23:02
5F:→ pttlyt:阿...我看彭那本書還是沒有很懂type 能示範一下簡單例子嗎 03/01 23:28
6F:→ pttlyt:QAQ 03/01 23:28
7F:→ 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)
8F:→ gilocustom:以範例來說,只要將自訂型態person的內容設為可配置陣 03/02 00:54
9F:→ gilocustom:列/指標陣列,再將變數a宣告為person型態的可配置陣列 03/02 00:55
10F:→ gilocustom:/指標陣列,就可以廣義地在同個變數下分別配置不同維 03/02 00:55
11F:→ gilocustom:度。 03/02 00:55
12F:→ gilocustom:建議先採用比較單純的做法(配置足夠大的陣列), 03/02 01:03
13F:→ 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)