24小时热门版块排行榜    

查看: 2254  |  回复: 4

wingkin

新虫 (初入文坛)

[交流] Fortran 函数中的循环无法进行 已有4人参与

最近初学fortran,遇到一个比较怪异的问题,调试了一天也没法解决,故请教大家一下。

程序已经简化,估计里面有多余的语句,不过不是重点。

程序代码如下

------------------------------------------------------------------------------------

module aa
  type coordinate
        integer :: number, x, y, z
  end type
end module

program bb
  use aa
  implicit none


  integer, parameter :: y=4
  integer, parameter :: h=11
  integer k

k=6

call sp(k,y)

if (k==1) then
write (*,*) "ok!"
end if

  
  stop
end program

subroutine sp(k,p)
implicit none


type surf
integer :: t, x, y, z
end type
integer, parameter :: v=22
integer,intent(in):: p
integer k,n
type(surf) :: s(p)
k=0

open(v, file="a.txt",status="old"
do n=1,p
   read(v,*) s(n)%t, s(n)%x, s(n)%y, s(n)%z
   if ( s(n)%t == k ) then
    k=1
   end if
end do
return
end
--------------------------------------------------------------------------------------------
其中 a.txt 数据如下
           8          79          65           0
           3          79          65           0
           4          79          65          0
           52         79          65          0
--------------------------------------------------------------------------------------------

经调试后,发现函数只循环一次便出错了。
即 读取完 s(1)%t, s(2)%x, s(3)%y, s(4)%z  后继续读取 s(2)%t 便开始出错了。

请问为什么会出现这样的问题,同样的语句放在主函数上运行没有问题,可以完整读取a. txt的数据, 结果放进函数里面就出问题了。

谢谢大家的关注和指导
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

夕阳西下

金虫 (著名写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
主程序:integer k
             k=6
子程序:type(surf) :: s(p)
                 k=0

是不是矛盾
2楼2013-05-30 08:43:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zeppe

金虫 (小有名气)


小木虫: 金币+0.5, 给个红包,谢谢回帖
我在gfortran (gcc4.5.3) 下测试了楼主的程序,循环没有问题,可以正常读取。
3楼2013-05-30 10:55:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lyli982

木虫 (小有名气)


小木虫: 金币+0.5, 给个红包,谢谢回帖
出错提示什么哪里出错了啊?从程序上,没看出问题啊。一个小问题是k那里你肯定写的不对,主程序中是6,子程序中又赋了初值0。初值肯定不是这个值。但是这个k值不会导致出错的。
4楼2013-05-31 06:01:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

学虫dj

金虫 (正式写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
我测试了一下楼主的程序 没有问题,楼上提到的k不会构成错误  ,只是一个判断而已,还有楼主提到的“即 读取完 s(1)%t, s(2)%x, s(3)%y, s(4)%z  后继续读取 s(2)%t 便开始出错了”,这个不应该是这么读取吧,应该是
s(1)%t, s(1)%x, s(1)%y, s(1)%z 之后是
s(2)%t, s(2)%x, s(2)%y, s(2)%z  之后是
。。。。。。。
穷则独善其事,达则兼济天下
5楼2013-06-06 16:02:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wingkin 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 DpSrDtM079iu 2026-08-22 5/250 2026-08-23 04:07 by OEbVnUOu01ol
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 2JOx3r2CYEgw 2026-08-22 7/350 2026-08-23 03:55 by OEbVnUOu01ol
[论文投稿] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 2JOx3r2CYEgw 2026-08-22 6/300 2026-08-23 03:40 by OEbVnUOu01ol
[考博] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 2JOx3r2CYEgw 2026-08-21 9/450 2026-08-23 03:31 by OEbVnUOu01ol
[硕博家园] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +4 QTy3jDtz1uLt 2026-08-21 11/550 2026-08-23 02:55 by OEbVnUOu01ol
[考博] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 DpSrDtM079iu 2026-08-22 3/150 2026-08-23 00:55 by OEbVnUOu01ol
[基金申请] 93BebMhtakh前后11位开头都是大写 +7 且听虎啸 2026-08-17 8/400 2026-08-22 21:55 by 医学老男孩
[基金申请] 只有每年这种时候来逛逛小木虫 +24 yaoyewhu2008 2026-08-20 26/1300 2026-08-22 17:43 by kammury
[基金申请] filecode,4个jtjc了 +13 ziyangfang 2026-08-19 16/800 2026-08-22 17:08 by WH3796
[教师之家] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +4 2JOx3r2CYEgw 2026-08-21 4/200 2026-08-22 16:52 by sunzitan
[基金申请] 时间戳今天,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
[基金申请] 时间戳又变了 +13 wuchongjun 2026-08-20 19/950 2026-08-21 17:21 by 紫杉醇
[基金申请] 我面上完蛋了 +7 且听虎啸 2026-08-20 8/400 2026-08-21 12:31 by 酷酷墨镜
[基金申请] 基金啊基金 +4 longfie172 2026-08-20 4/200 2026-08-21 08:58 by mark mao
[基金申请] 今天系统多次维护,明天很可能放榜! +10 zju2000 2026-08-16 11/550 2026-08-20 20:02 by cl479861084
[基金申请] 时间戳变了,能看出什么问题? +18 基诺咪客 2026-08-17 23/1150 2026-08-20 17:19 by Godzela
[基金申请] 今天放榜吗? +14 布布和一二 2026-08-19 15/750 2026-08-19 18:07 by gltch
[基金申请] 朋友圈看到的 +6 wangzilk 2026-08-18 8/400 2026-08-19 10:55 by Haru815
[基金申请] 明天放榜? +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -大大大大大-
信息提示
请填处理意见