Fortran 错误:‘;fmedian&x2019;at(1)不是一个变量
我想看看这个函数是如何工作的。我试着写一些小的f77代码Fortran 错误:‘;fmedian&x2019;at(1)不是一个变量,fortran,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 pre
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
我应该在pic代码中更改什么
当我试图编译Alexander的代码时,我得到了
print *, fmedian(a,b,c)
1
Warning: Type mismatch in argument ‘x’ at (1); passed INTEGER(4) to REAL(4)
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
调用者整数数组和被调用者隐式实数之间仍然存在不匹配。将x声明为整数数组将修复它