我定义了两个2D数组h
和hh
。我想为hh
分配新值。对于特定的k'
,如果条件
hh(k',j)=1
h(k',j)>0
是真的;一旦条件为假,即h(k',j')<0
,则对任何j>j'
,hh(k',j)=0
。我使用了以下DO WHILE
循环:
do k=1, npair
do j =1, movie
hh(k,j)=0.0
enddo
enddo
do k=1, npair
do j =1, nmovie
do while (h(k,j)>0)
hh(k,j)=h(k,j)
enddo
enddo
但如果条件(h(k,j)>0)
始终为真,则会出现无限循环!你能否建议如何实施它?
答案 0 :(得分:1)
在我看来,您可以根据hh
的值设置h
的每个值。我还假设hh
和h
的大小相同。所以你应该{h}每个元素do
。我推荐以下内容:
do k=1,N1 ! N1 and N2 are the limits of the hh and h array.
do j=1,N2
if ( h(k,j) > 0) then ! Check the condition for a specific element in h
hh(k,j) = 1
else
! -- We need to set *all* values in the desired range
hh(k,j:N2) = 0
! -- And we need to stop loop from overwriting values hh(k,j+1), for example
! -- So we break out of the j loop
exit
endif
enddo
enddo
您应该检查以确保这符合您的想法。请注意,我使用冒号表示法在hh数组中指定一系列值。
此外,如果h(k,j)
完全为0,您还不清楚会发生什么。