Fortran Coder

标题: bisec子程序ielem()传递时是以一个数组还是以一个数传递 [打印本页]

作者: 跟着感觉走    时间: 2021-11-11 17:52
标题: bisec子程序ielem()传递时是以一个数组还是以一个数传递
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-------------------------------------------------------------------------------


作者: 风平老涡    时间: 2021-11-11 20:57
inp 和 loct(inp) 都是单变量, 相应的ielem(loct(inp))和 numt (inp) 也是单变量。而子程序 bisec 却定议的是数组,运行时会出错。
作者: li913    时间: 2021-11-11 21:20
fortran是地址传递
http://fcode.cn/guide-103-1.html
作者: 跟着感觉走    时间: 2021-11-12 09:23
风平老涡 发表于 2021-11-11 20:57
inp 和 loct(inp) 都是单变量, 相应的ielem(loct(inp))和 numt (inp) 也是单变量。而子程序 bisec 却 ...

谢谢大佬

作者: 跟着感觉走    时间: 2021-11-12 09:23
li913 发表于 2021-11-11 21:20
fortran是地址传递
http://fcode.cn/guide-103-1.html

谢谢 大佬




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2