作者UDP (阿猫)
看板Fortran
标题Re: [问题] 未知大小矩阵读取的问题
时间Tue Aug 11 18:36:50 2009
※ 引述《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
1F:→ Semisphere:何不写个切割字串副程式,再把字串转成数值阵列回传 08/11 19:07