找到阵列中的最小值,fortran

Sha*_*lav 0 fortran

我需要帮助我的朋友.这是一项简单的任务.我需要在数组中找到一个最小的元素.

program TEST
    ! your code goes here
    integer a(5), n, min
    a = (/2, -5, 3, 5, 8/)
    n = 5
    min = a(1)

    !reading from keyboard
    !do i=1,n
     !read*,a(i)
    !end do

    print*, 'array:'
    do i=1,n
     print*,a(i)
    end do

    !print*, '???????, ????? ????????????:'
    do i=2,n
     if (min .lt. a(i)) then
      min = a(i)
      !print*, min, a(i), ' '
     end if
    end do

    print*, 'minimal: '
    print*, min

    stop
end
Run Code Online (Sandbox Code Playgroud)

所以.我根本没有alghoritm的问题.我很容易用任何其他语言来做))但不存在.问题时,我比较会出现mina(i).

程序一直认为min < a(i).为什么?那min就是8,因为8是最后一个.

fra*_*lus 6

你想找到最小的a(i),所以到目前为止你的测试是错误的方法:使用if (a(i).lt.min) min=a(i)或替代.

但你可能想考虑一下MINVAL(a).