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

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

问题描述:

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

I want to see how this function works.I have tried to write small f77 code

      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

我应该更改我的图片代码

What should I change in my pic code

当我尝试编译Alexander`s我得到的代码

When I try to compile Alexander`s code I got

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


fmedian 是一个函数,即它返回一些东西。但是,您不会在任何地方分配返回值。

fmedian is a function, i.e. it returns something. However, you do not assign the return value anywhere.

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

You could, e.g., print the result of fmedian to the screen:

      print *, fmedian(a,b,c)

另外,您需要声明 fmedian

      real fmedian






看起来像:


Your program would then look like:

      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