跟着感觉走 发表于 2021-11-11 17:52:09

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:59

inp 和 loct(inp) 都是单变量, 相应的ielem(loct(inp))和 numt (inp) 也是单变量。而子程序 bisec 却定议的是数组,运行时会出错。

li913 发表于 2021-11-11 21:20:37

fortran是地址传递
http://fcode.cn/guide-103-1.html

跟着感觉走 发表于 2021-11-12 09:23:12

风平老涡 发表于 2021-11-11 20:57
inp 和 loct(inp) 都是单变量, 相应的ielem(loct(inp))和 numt (inp) 也是单变量。而子程序 bisec 却 ...

谢谢大佬

跟着感觉走 发表于 2021-11-12 09:23:48

li913 发表于 2021-11-11 21:20
fortran是地址传递
http://fcode.cn/guide-103-1.html

谢谢 大佬
页: [1]
查看完整版本: bisec子程序ielem()传递时是以一个数组还是以一个数传递