作者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)