错误:(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