如果数组1中的元素大于数组2中的元素那么

时间:2014-07-23 14:33:44

标签: if-statement fortran

我很想使用fortran和im在if语句中遇到一些问题。我试图写出一些东西,如果数组1中的元素大于数组2中的元素然后让h =某个表达式,否则h = 0.我已经在下面编写了我的代码

  DO I=1,NPOIN 

  IF ((X(I)*COS(0.0)+0.0*Y(I)*COS(0.0)+0.1)*0.15 .GT. ZF(I)) THEN  
    H%R(I) =0.15*((X(I)*COS(0.0))+(0.0*Y(I)*COS(0.0))+0.1)
  ELSE
    H%R(I) = 1 
  ENDIF

  ENDDO 

我得到的错误是:

 IF ((X(I)*COS(0.0)+0.0*Y(I)*COS(0.0)+0.1)*0.15 .GT. ZF(I)) THEN  

Error: Syntax error in IF-expression at (1)

道歉,如果这是一些非常明显的东西,但我已经尝试了所有种类来解决它到目前为止没有喜悦。任何帮助,将不胜感激。

可能有一种更好的方法来比较两个阵列,但是基本上我尝试将ZF作为我的主阵列,但是当H大于ZF时我希望ZF值被H值替换。所以我基本上有一个新的数组,两个数组之间可能有最大值。

提前致谢

1 个答案:

答案 0 :(得分:2)

可能有更好的方法来比较两个阵列但是基本上我尝试将ZF作为我的主阵列,但是当H大于ZF时我希望ZF值被H值替换。所以我基本上有一个新数组,两个数组之间可能有最大值。

如果hzf具有相同的形状,您只需写下:

where (h>zf) 
    zf = h
end where

如果它们没有相同的形状,请说明您要做的事情。

(现代)Fortran是一种数组语言(直到第一次近似)所以想想全数组操作而不是循环。它们可能更快,更有可能不是,但它们写得更快,更容易理解。如果性能不够好,那么考虑一个do循环替换。