我很想使用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值替换。所以我基本上有一个新的数组,两个数组之间可能有最大值。
提前致谢
答案 0 :(得分:2)
可能有更好的方法来比较两个阵列但是基本上我尝试将ZF作为我的主阵列,但是当H大于ZF时我希望ZF值被H值替换。所以我基本上有一个新数组,两个数组之间可能有最大值。
如果h
和zf
具有相同的形状,您只需写下:
where (h>zf)
zf = h
end where
如果它们没有相同的形状,请说明您要做的事情。
(现代)Fortran是一种数组语言(直到第一次近似)所以想想全数组操作而不是循环。它们可能更快,更有可能不是,但它们写得更快,更容易理解。如果性能不够好,那么考虑一个do
循环替换。