本文介绍了错误:(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

这篇关于错误:(1)处的'fmedian'不是一个变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-22 19:22