24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 2695  |  回复: 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的回帖

虚空中的幻影

金虫 (正式写手)

引用回帖:
8楼: Originally posted by hanye0517 at 2014-04-21 19:54:32
我的意思是,比如要定义一个数组A,要先声明allocatable,然后在下边allocate,一个数组还是比较好解决的。
但是当我有100个数组的时候…………咋整,不能写一百遍吧,加一起就200次?
即使allocate可以allocate ...

你可以考虑derived variables
9楼2014-04-21 21:02:49
已阅   回复此楼   关注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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 求调剂 +3 usbdndj 2026-04-03 3/150 2026-04-03 14:10 by dxiaoxin
[考研] 数一英一285求调剂 +7 AZMK 2026-04-03 9/450 2026-04-03 13:03 by ms629
[考研] 材料调剂 +4 吴棂颖! 2026-04-03 4/200 2026-04-03 11:06 by wangjy2002
[考研] 298分 070300求调剂 +11 zwen03 2026-04-02 11/550 2026-04-03 10:19 by macy2011
[考研] 274求调剂 +10 薛定谔的虎。 2026-04-01 10/500 2026-04-03 10:13 by tianyyysss
[考研] 326求调剂 +10 崽崽仔 2026-04-02 10/500 2026-04-03 09:08 by 帕尔马拉特
[考研] 求调剂 +5 朔朔话 2026-04-02 6/300 2026-04-02 22:02 by barlinike
[考研] 070305高分子化学与物理 304分求调剂 +16 c297914 2026-03-28 16/800 2026-04-02 20:50 by dongzh2009
[考研] 264分,求任意工科调剂 +4 zzlqwq 2026-03-29 5/250 2026-04-02 17:17 by 何曾几何
[考研] 336求调剂 +6 kiyy 2026-04-01 6/300 2026-04-02 15:51 by Jaylen.
[考研] 08工科求调剂290分 +5 1314捧花 2026-04-02 8/400 2026-04-02 13:16 by 乔哒哒哒
[考研] 324求调剂 +5 想上学求调 2026-04-01 6/300 2026-04-02 10:16 by sanrepian
[考研] 285求调剂 +11 AZMK 2026-04-01 11/550 2026-04-01 22:40 by peike
[考研] 298求调剂 +4 什么是胖头鱼 2026-03-30 6/300 2026-04-01 22:06 by 客尔美德
[考研] 求调剂0703 +5 周嘉尧 2026-03-31 8/400 2026-04-01 20:32 by ltltkkk
[考研] 086502化学工程342求调剂 +7 阿姨复古不过 2026-03-27 7/350 2026-04-01 16:14 by yanflower7133
[考研] 求调剂 +4 DADA怪 2026-03-31 4/200 2026-04-01 14:30 by ZXlzxl0425
[考研] 考研生物与医药调剂 +7 铁憨憨123425 2026-03-31 7/350 2026-04-01 08:45 by JourneyLucky
[考研] 085601英二数二求调剂 总分325 +4 余航航 2026-03-31 4/200 2026-03-31 17:38 by 唐沐儿
[考研] 085602 化学工程专硕 340分求调剂 +4 qianbai11 2026-03-29 4/200 2026-03-30 11:34 by 唐沐儿
信息提示
请填处理意见