Fortran Coder

查看: 108|回复: 4

[子程序] bisec子程序ielem()传递时是以一个数组还是以一个数传递

[复制链接]

5

帖子

2

主题

0

精华

入门

F 币
40 元
贡献
18 点
发表于 2021-11-11 17:52:09 | 显示全部楼层 |阅读模式
n=30
do i=1,n
ielem(i)=i
enddo
loct(inp)=1
call bisec(x,ielem(loct(inp)),numt(inp),ysep,nsepy, 2)

      subroutine bisec(x,ielem,n,xsep,nsep,ic)

      implicit real*8(a-h,o-z)

      dimension x(2,*),ielem(*)

      nsep = 1
      if(n.le.0) return

      do ifr=1,n
         if(x(ic,ielem(ifr)).le.xsep) then
            if(ifr.ne.nsep) then
               istore      = ielem(nsep)
               ielem(nsep) = ielem(ifr)
               ielem(ifr)  = istore
            endif
            nsep = nsep + 1
         endif
        enddo

      return
      end

c-------------------------------------------------------------------------------

回复

使用道具 举报

154

帖子

2

主题

0

精华

宗师

F 币
1421 元
贡献
730 点

规矩勋章

发表于 2021-11-11 20:57:59 | 显示全部楼层
inp 和 loct(inp) 都是单变量, 相应的ielem(loct(inp))和 numt (inp) 也是单变量。而子程序 bisec 却定议的是数组,运行时会出错。

646

帖子

2

主题

0

精华

大宗师

F 币
3196 元
贡献
2001 点
发表于 2021-11-11 21:20:37 | 显示全部楼层
fortran是地址传递
http://fcode.cn/guide-103-1.html

5

帖子

2

主题

0

精华

入门

F 币
40 元
贡献
18 点
 楼主| 发表于 2021-11-12 09:23:12 | 显示全部楼层
风平老涡 发表于 2021-11-11 20:57
inp 和 loct(inp) 都是单变量, 相应的ielem(loct(inp))和 numt (inp) 也是单变量。而子程序 bisec 却 ...

谢谢大佬

5

帖子

2

主题

0

精华

入门

F 币
40 元
贡献
18 点
 楼主| 发表于 2021-11-12 09:23:48 | 显示全部楼层
li913 发表于 2021-11-11 21:20
fortran是地址传递
http://fcode.cn/guide-103-1.html

谢谢 大佬
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2021-12-3 03:23

Powered by Tencent X3.4

© 2013-2021 Tencent

快速回复 返回顶部 返回列表