24小时热门版块排行榜    

查看: 2614  |  回复: 15
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

hanye0517

木虫 (小有名气)

[求助] fortran 如何在子程序中实现动态数组的定义和声明? 已有4人参与

我编了一个动态数组的小例子,代码如下
CODE:
program allocatable
implicit none
real:: inteval=0.01,TI=0.03,Bc=0.24,Bdot=4.
real,dimension(:),allocatable :: time
real,dimension(:),allocatable :: B
real,dimension(:,:),allocatable:: TB
integer:: n=1,m=2
integer::i
print *,'The size of the shuzu?'
read *,n
allocate(time(n))
allocate(B(n))
allocate(TB(m,n))
do i=1,n
   time(i)=TI+inteval*i
   B(i)=Bdot*(time(i)-TI)+Bc
enddo
   TB(1,:)=time
   TB(2,:)=B
   print 100,TB
   100 format(f8.5,5x,f8.5)
end program allocatable   

但是我觉得声明数组和分配内存的语句在主程序里太碍眼了,很烦躁。
想把他放到subroutine或者module或者function中,让结构更清晰。
但是子程序中的话,能编译,但是显示段错误。
module中干脆不能编译。
function说是只能返回一个数值,不知到怎么能返回一个数组,还是一个动态数组。

其实我想实现的功能就是避开复杂的fortran声明,像matlab那样用一个函数什么的声明一个动态数组。比如上边程序中,如果要是能用time=func(n),生成一个n个元素的一维数组,TB=func(m,n)生成一个2位数组就最好了。不知到这样的程序function要怎么整?求指导!
回复此楼
道之所在,虽千万人吾往矣。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hanye0517

木虫 (小有名气)

目前有个模块化的方法就是分配全局变量数组。具体方法是:
。。。。。。。。。。。。。
MODULE AAA
INTEGER ::N
REAL,DIMENSION(:),ALLOCATLABLE,SAVE:: A,B,C,D
END MODULE
。。。。。。。。。。。。。。。。。。。。。
SUBROUTINE BBB
USE AAA
READ *,N
ALLOCATE(A(N),B(N),C(N),D(N))
END SUBROUTINE
。。。。。。。。。。。。。。。。。。。。
PROGRAM CCC
CALL BBB!调用分配全局变量数组的 子程序。
道之所在,虽千万人吾往矣。
14楼2014-04-22 16:20:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 16 个回答

baobiao007

木虫 (职业作家)

中国特色

很可能使得最后的程序结构费力不讨好
我同意叔本华的观点,人们投身艺术和科学领域的强烈愿望之一就是逃离痛苦、残酷和枯燥无味的现实生活,逃离自己飘忽不定的七情六欲的桎梏。--爱因斯坦
2楼2014-04-21 13:31:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

虚空中的幻影

金虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
hanye0517: 金币+10, 有帮助 2014-06-26 13:14:34
module中就好,,不可能不能编译
3楼2014-04-21 15:18:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hanye0517

木虫 (小有名气)

引用回帖:
3楼: Originally posted by 虚空中的幻影 at 2014-04-21 15:18:46
module中就好,,不可能不能编译

能重复使用么,我要构造几十个数组,这不重复没有意义啊
道之所在,虽千万人吾往矣。
4楼2014-04-21 15:36:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[找工作] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 i3cz6qj6l2 2026-02-17 3/150 2026-02-18 11:09 by lqtl9djx19
[考博] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 i3cz6qj6l2 2026-02-17 3/150 2026-02-18 10:54 by lqtl9djx19
[考研] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 i3cz6qj6l2 2026-02-17 3/150 2026-02-18 10:39 by lqtl9djx19
[考研] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-18 08:53 by lqtl9djx19
[硕博家园] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-18 08:38 by lqtl9djx19
[找工作] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-17 4/200 2026-02-18 07:55 by lotyj5cz79
[基金申请] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:40 by lotyj5cz79
[考研] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:38 by lotyj5cz79
[硕博家园] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:23 by lotyj5cz79
[论文投稿] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:08 by lotyj5cz79
[公派出国] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-16 3/150 2026-02-18 06:53 by lotyj5cz79
[论文投稿] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-18 00:40 by tk2gfblvuz
[找工作] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 4/200 2026-02-18 00:23 by tk2gfblvuz
[公派出国] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-17 23:40 by tk2gfblvuz
[基金申请] 基金正文30页指的是报告正文还是整个申请书 +3 successhe 2026-02-16 4/200 2026-02-17 20:56 by successhe
[基金申请] 今年春晚有几个节目很不错,点赞! +5 瞬息宇宙 2026-02-16 6/300 2026-02-17 12:49 by jymy19840415
[微米和纳米] 球磨粉体时遇到了大的问题,请指教! 10+3 6sbiam 2026-02-12 15/750 2026-02-16 15:03 by tgzxzqj
[基金申请] 过年走亲戚时感受到了所开私家车的鄙视链 +3 瞬息宇宙 2026-02-15 5/250 2026-02-16 14:23 by aspect3000
[基金申请] 情人节自我反思:在爱情中有过遗憾吗? +4 瞬息宇宙 2026-02-15 5/250 2026-02-15 22:28 by baiboxie
[硕博家园] 江汉大学解明教授课题组招博士研究生/博士后 +3 cleverlyy 2026-02-12 3/150 2026-02-12 21:02 by qsdf1
信息提示
请填处理意见