在Fortran中不使用maxval的数组的最大值

时间:2018-02-19 08:56:36

标签: fortran gfortran fortran90

我希望在代码的最后两部分(标有T)中找不到maxval数组的最大值而不使用**。不幸的是,它没有用。它将所有经过if条件验证的数字放在我身上,而没有找到最大值。 if条件只取第一个数字并与其他数字进行比较,如果经过验证,则显示全部我无法找到我的错误。

Program exo2

Implicit None 
Real, Dimension (:,:), Allocatable   :: D    
integer                              :: i,Z,A,B,ok
Real                                 :: no_esc_max=1 , no_esc_min=1
Real, Dimension(:)   , Allocatable   :: T                            

print*, "entrez le nombre etudies"
read*, A
print*, "entrez le nombre de mesures pour chaque escargot"
read*, B

Allocate(D(A,B), STAT=ok)
Allocate(T(A), STAT=ok)

if (ok/=0) then
    print* , "allocation a echoue"
    Stop
end if

Do i=1,A
   Do z=1,B
    Print*, "Escargot",i
    Print*,"entrez la vitesse lors de la mesure",z
    Read*, D(i,z)
   end do
end do

Do i=1,A
   print*, D(i,:)                                
end do                          

Do i=1,A
   Do z=1,B
   T(i)=Sum(D(i,:))/z
   end do
   print*, "moyenne escargot", i , T(i)
end do


! (**) This block seems to have the problem
no_esc_max=T(1)
do i=2,A
   if (no_esc_max<T(i)) then
      T(i)=no_esc_max
   end if
   print* , "escargot",i, "est le plus rapide"
end do

no_esc_min=T(1)
do i=2,A
  if (no_esc_min>T(i)) then 
     T(i)=no_esc_min
  end if 
  print*, "escargot", i, "est le moins rapide"
end do
! (**) End of the block

Deallocate (D)
Deallocate (T)

End Program exo2

1 个答案:

答案 0 :(得分:0)

要打印正确的i,您应该跟踪指向最大/最小值的索引。另外,请打印*,&#39; ..&#39; do循环外的命令。否则,您似乎只是打印所有这些。