错误:(1)处的'fmedian'不是变量

时间:2016-09-23 18:23:50

标签: fortran

我想看看这个函数是如何工作的。我试过写小f77代码

      program pic

      implicit none
      integer c,a
      integer b(5)
      external fmedian
      c=5
      b=(/9,2,7,1,6/)  
      fmedian(a,b,c)

      end


      real function fmedian(xmed,x,n)
      double precision sum
      integer i,n,xmed
      dimension x(n)
      sum=0.d0
      do 10 i=1,n
        sum=sum+(x(i)-xmed)/abs(x(i)-xmed)
  10    continue
      fmedian=sum
      return
      end

我应该在我的图片代码中更改

当我尝试编译Alexander的代码时,我得到了

       print *, fmedian(a,b,c)
                         1
Warning: Type mismatch in argument ‘x’ at (1); passed INTEGER(4) to REAL(4)

1 个答案:

答案 0 :(得分:2)

fmedian是一个函数,即它返回一些东西。但是,您不会将返回值分配到任何位置。

您可以,例如,将fmedian的结果打印到屏幕上:

      print *, fmedian(a,b,c)

此外,您需要声明fmedian

的返回值
      real fmedian

您的程序将如下所示:

      program pic

      implicit none
      integer c,a
      integer b(5)
      real fmedian
      external fmedian
      c=5
      b=(/9,2,7,1,6/)  
      print *, fmedian(a,b,c)

      end


      real function fmedian(xmed,x,n)
      double precision sum
      integer i,n,xmed
      dimension x(n)
      sum=0.d0
      do 10 i=1,n
        sum=sum+(x(i)-xmed)/abs(x(i)-xmed)
  10    continue
      fmedian=sum
      return
      end