24小时热门版块排行榜    

Znn3bq.jpeg
查看: 693  |  回复: 10

贺仪

铁杆木虫 (著名写手)

[求助] 动态数组分配

我有一个数组cc(:,:,:)我通过读取文件 知道其中的前两维如(8,6,:),第三维要在定义以后才知道。
程序结构是这样的:
读取文件知道cc大小是(8,6,,第三维未知
然后进入循环读取
do i=1,8
           do j=1,6
            读取文件,知道cc(i,j,:)的第三维,但是每次大小都不一样:如cc(1,1,:)有5623个,cc(2,1,有1234个,(这里面最大的也不知道)
            然后读取     给 cc(i,j,5623)赋值
           enddo
enddo

请问只里面怎么是用动态分配?可以这样吗?:
      ALLOCATE(CC(NBAND,NKPTS, )先定下二维,然后在循环里面定义第三维吗?可以的话应该怎么弄?这样就会不会多次分配而出错?

或者有什么方法可以读取出来?
回复此楼
嘟啦啦嘟啦啦嘟
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

贺仪

铁杆木虫 (著名写手)

:)是:和)
嘟啦啦嘟啦啦嘟
2楼2011-11-10 15:36:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

贺仪

铁杆木虫 (著名写手)

笑脸是:和)
嘟啦啦嘟啦啦嘟
3楼2011-11-10 15:36:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

koorb

铁虫 (初入文坛)

【答案】应助回帖


贺仪(金币+2): 多谢建议 2011-11-10 16:40:46
余泽成(金币+1): 谢谢参与应助!欢迎常来程序语言版! 2011-11-10 21:47:42
数组的3个维数是只能到程序运行到最后才能知道第3维的最大值,比如是D3。这时候数组才最后确定为ALLOCATE(CC(NBAND,NKPTS,D3 )。之前可以再定义一个临时变量暂时保存数据。

或者用链表,也就另外一种数据结构。
天道
4楼2011-11-10 15:53:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

koorb

铁虫 (初入文坛)

【答案】应助回帖

贺仪(金币+2): 多谢建议 2011-11-10 16:40:54
如果我没理解错的话,你是要将48个长度未知且不等的数组保存起来。
先动态定义一个6×8的二维数组。这个二维数组的数据类型是“数组”,也就是之前说的48个数组。
天道
5楼2011-11-10 16:01:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

贺仪

铁杆木虫 (著名写手)

引用回帖:
5楼: Originally posted by koorb at 2011-11-10 16:01:14:
如果我没理解错的话,你是要将48个长度未知且不等的数组保存起来。
先动态定义一个6×8的二维数组。这个二维数组的数据类型是“数组”,也就是之前说的48个数组。

是的 但这只是举个例子,真正的数组会达到30*50

但是变成48个二维数组也没什意义,还是不能在这之前定义保存起来。

前面说的用一个临时变量那也要48个变量呀……

另外链表怎么用?可否大概说一下我的这个问题怎么解决?
嘟啦啦嘟啦啦嘟
6楼2011-11-10 16:40:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

koorb

铁虫 (初入文坛)

【答案】应助回帖


贺仪(金币+2): 谢谢,还是有点问题…… 2011-11-11 09:43:31
xzhdty(金币+1): 欢迎常来程序语言讨论 2011-11-11 10:46:21
引用回帖:
6楼: Originally posted by 贺仪 at 2011-11-10 16:40:17:
是的 但这只是举个例子,真正的数组会达到30*50

但是变成48个二维数组也没什意义,还是不能在这之前定义保存起来。

前面说的用一个临时变量那也要48个变量呀……

另外链表怎么用?可否大概说一下我的这 ...

30×50和6×8对应编程来说又有什么区别呢?
我说的3个方案都是可行的,只是你否定得太快了。
如果你不能从下面的例子中得到启示的话,那就算了。
   integer d1,d2,d3,i,j,k
    double precision, allocatable::array(:,:,
    d1=2
    d2=3
    d3=1
    allocate(array(d1,d2,d3))
    print *, array
    print *, "*****************"
    do i=1,d1
        do j=1,d2
            deallocate(array)!deallocate之前保存数据到临时数组里。
            d3=2
            allocate(array(d1,d2,d3))
        end do
    end do
    print *, array
天道
7楼2011-11-11 08:03:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

贺仪

铁杆木虫 (著名写手)

引用回帖:
7楼: Originally posted by koorb at 2011-11-11 08:03:30:
30×50和6×8对应编程来说又有什么区别呢?
我说的3个方案都是可行的,只是你否定得太快了。
如果你不能从下面的例子中得到启示的话,那就算了。
   integer d1,d2,d3,i,j,k
    double precision, allocata ...

看完之后始终不知道你的临时文件怎么处理……
      你一句话说保存到临时变量,可这个过程怎么弄呢?如果还是一个数组的话, 还是回答原来的问题了。如果是我没明白你的意思,麻烦你在写详细点可以吗?只要解决了金币可以全部给你。
      其实,我自己已经找到了解决问题的方法,先把文件读取一次得到第三维数最大的值,然后再重新打开文件并分配数组,这样读取数据就可以了。
嘟啦啦嘟啦啦嘟
8楼2011-11-11 09:43:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fubao-411

木虫 (小有名气)

【答案】应助回帖


xzhdty: 欢迎常来程序语言讨论 2011-11-11 10:46:29
余泽成(金币+1): 谢谢参与应助!欢迎常来程序语言版! 2011-11-13 21:04:04
可以先定义一个足够大的数组,全部初始化为0,读取完数据后,再处理其中有用的数据,其他的数据可以丢掉,如只处理其中不为0的数据 ....
轻松走一回!
9楼2011-11-11 09:57:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小子wx

铜虫 (小有名气)

楼主问题解决了没有?   解决了的话麻烦把具体方法和程序写一下  大家都学习学习吗
10楼2011-11-23 20:36:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 贺仪 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考博] 博士申请 +6 星…… 2026-05-18 7/350 2026-05-24 22:45 by 预约这个秋天
[基金申请] 青B发送上会通知了吗 +5 chemBioBro 2026-05-22 8/400 2026-05-24 22:10 by Max0601
[考博] 化学专业申博 +3 赵子羊 2026-05-23 4/200 2026-05-24 18:10 by 工大学长
[基金申请] 评审有感 +16 popular289 2026-05-18 27/1350 2026-05-24 17:34 by hhs666
[硕博家园] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 hvkbtfonbv 2026-05-23 4/200 2026-05-24 17:21 by 75ui6h7z2t
[博后之家] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 hvkbtfonbv 2026-05-23 3/150 2026-05-24 17:10 by 75ui6h7z2t
[考博] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 hvkbtfonbv 2026-05-23 3/150 2026-05-24 17:01 by 75ui6h7z2t
[论文投稿] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 a2tycdlnq1 2026-05-23 4/200 2026-05-24 16:16 by hhx1yx9evi
[基金申请] 河北省自然科学基金 +6 Peterchao 2026-05-18 9/450 2026-05-24 16:02 by 130067131
[硕博家园] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 pmo95bazuy 2026-05-23 8/400 2026-05-24 15:56 by 1uy1ht2y9r
[基金申请] 西安交大新媒学院副院长用撤稿论文结题 +3 bjvtcliu 2026-05-24 5/250 2026-05-24 10:16 by kudofaye
[教师之家] 某211大学教师把个人教师官方主页改成:我跑了我跑了我跑了!官宣跑路! +4 zju2000 2026-05-21 5/250 2026-05-24 09:35 by songwz
[考博] 26/27申博自荐 10+4 ZXW0202 2026-05-22 9/450 2026-05-24 08:47 by bjvtcliu
[考博] 博士申请 +3 焦晓明 2026-05-21 3/150 2026-05-23 11:26 by mlc840311
[论文投稿] 投稿求助,期刊 +4 希冀,有书读 2026-05-20 8/400 2026-05-22 10:16 by 希冀,有书读
[文学芳草园] 献血感触 +7 呀呀好傻 2026-05-19 13/650 2026-05-21 20:15 by 呀呀好傻
[基金申请] 国自然评分 +4 无名者登山 2026-05-20 5/250 2026-05-21 16:35 by swuq
[基金申请] 提交了我也来说说感想 +9 fummck 2026-05-20 10/500 2026-05-21 14:17 by draco1987
[有机交流] 反应很差,大量原料没有反应 5+3 Mr.Zot 2026-05-19 8/400 2026-05-20 22:19 by Equinoxhua
[考博] 如果工作了想读博,可以边工作边读全日制嘛? 30+3 铁达火车 2026-05-18 5/250 2026-05-20 09:33 by tfang
信息提示
请填处理意见