*我正在尝试使用FORTRAN代码根据某些条件对数据集进行分组。 代码如下。
gauche = 0.0
trans = 0.0
do i = 1, total_data
!write(*,*) nombor(i), dihedral(i)
if ( (0 > dihedral(i) < 120) .or. (-120 > dihedral(i) < 0) ) then
gauche = gauche + 1
else
trans = trans + 1
endif
end do
write(20,*) "Layer1_seg_total= ",(gauche+trans)," ","gauche_seg= ",gauche,"trans_seg= trans
但是当我编译时,我得到如下错误信息:
if ((0 > dihedral(i) < 120) .or. (-120 > dihedral(i) < 0)) then
1
Error: Expected a right parenthesis in expression at (1)
population.f90:42.5:
else
1
Error: Unexpected ELSE statement at (1)
population.f90:44.4:
endif
1
Error: Expecting END DO statement at (1)
我无法追踪错误。谁能提出错误?
注意:这不是作业
答案 0 :(得分:4)
Fortran 90有六个关系运算符:&lt;,&lt; =,&gt;,&gt; =,==,/ =
这六个关系运算符中的每一个都采用两个表达式,比较它们的值,并产生.TRUE。或者.FALSE。
因此,a> b&lt; c是错误的,因为&lt; b是LOGICAL,c是REAL。
将您的测试重写为:
if ( (0 > dihedral(i) .and. dihedral(i) < 120) .or. (-120 > dihedral(i) .and. dihedral(i) < 0) ) then
答案 1 :(得分:1)
你不能组合这样的表达式: a&gt; b&lt; C 在Fortran 写下这样的东西: a&gt; b。和。 b&lt; ç
答案 2 :(得分:0)
这是什么?
0 > dihedral(i) < 120
如果是&lt; x&lt;那么它应该写成
a < x .and. x < b
如果还有别的......