2016-09-23 30 views
1

我希望看到這個功能works.I試圖如何編寫小F77代碼錯誤:fmedian「在(1)不是一個變量

 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`s代碼我

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

回答

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 
+0

調用方整數數組和被調用方隱式實數之間仍存在不匹配。將x聲明爲整型數組可以修復它 – tim18

相關問題