24小时热门版块排行榜    

查看: 3031  |  回复: 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

木虫 (小有名气)

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

能重复使用么,我要构造几十个数组,这不重复没有意义啊
道之所在,虽千万人吾往矣。
4楼2014-04-21 15:36:15
已阅   回复此楼   关注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

木虫 (小有名气)

引用回帖:
2楼: Originally posted by baobiao007 at 2014-04-21 13:31:51
很可能使得最后的程序结构费力不讨好

想把结构分的散一点儿,这样容易改
道之所在,虽千万人吾往矣。
5楼2014-04-21 15:36:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 今日不放榜?网传国自然预计 8 月 27 日可查结果 +17 医学老男孩 2026-08-20 21/1050 2026-08-24 14:21 by refreshing11
[基金申请] 我面上完蛋了 +8 且听虎啸 2026-08-20 9/450 2026-08-24 13:52 by zzuzxg
[基金申请] 范进中举一文的中心思想 +6 炎黄贵胄 2026-08-22 7/350 2026-08-24 11:58 by 6543yes
[基金申请] 朋友圈看到的 +7 wangzilk 2026-08-18 9/450 2026-08-24 10:50 by cmrandy
[基金申请] 让我中一个面上吧! +13 大萍1987 2026-08-20 16/800 2026-08-24 10:23 by 太傻了
[基金申请] 明天应该可查了!? +4 chengyan1220 2026-08-23 4/200 2026-08-24 08:47 by gloomy6159
[基金申请] 什么时候开奖? +10 CrisMessi 2026-08-18 11/550 2026-08-24 06:50 by 开心的小狮子
[基金申请] 2026年的国家社科基金项目通讯评审的新规则与新动向、新挑战 +4 process2012 2026-08-23 5/250 2026-08-23 19:58 by jurkat.1640
[教师之家] 跳槽后在研项目怎么办? +5 简单化xn 2026-08-22 10/500 2026-08-23 12:38 by 简单化xn
[基金申请] 今天放榜吗? +15 布布和一二 2026-08-19 16/800 2026-08-23 09:55 by 张春生
[基金申请] 只有每年这种时候来逛逛小木虫 +24 yaoyewhu2008 2026-08-20 26/1300 2026-08-22 17:43 by kammury
[基金申请] 人气不行了 +8 fansofjerry 2026-08-21 8/400 2026-08-22 16:30 by zyqchem
[基金申请] 时间戳今天,20号变了 +5 archvillain 2026-08-20 5/250 2026-08-22 06:12 by hui_daxiao
[基金申请] 看来今天不会放榜了? +8 chengyan1220 2026-08-21 11/550 2026-08-21 17:52 by dcqxinyang
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
[论文投稿] 投稿咨询 +5 wwm09 2026-08-17 7/350 2026-08-21 10:11 by 期刊论文帮手
[基金申请] 今天放榜没戏了吧 +9 yuleib84 2026-08-19 11/550 2026-08-21 10:06 by gltch
[基金申请] 重要消息,中午系统在维护 +11 yuleib84 2026-08-18 12/600 2026-08-20 11:09 by xskun
[基金申请] 明天放榜? +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -大大大大大-
[基金申请] 今天维护系统维护 祝所有人 高中 +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by 家与远方
信息提示
请填处理意见