min and max of input array file (.dat) with subroutine

我是研究僧i 提交于 2019-12-11 23:41:51

问题


I try to implement a code that read in a number n, creates a vector to store n double precision numbers, read this number, call a subroutine printminmax() to find min and max. My code work perfect for normal numbers (integer,real etc) but when i have scientific notation (0.3412E+01) stack.Why? I thought with * read all the formats. Thanks

implicit none

integer, dimension(:), allocatable :: x
    integer :: n

    open (unit=77, file='input2.dat', action='read', status='old')
    read(77,*), n
    allocate(x(n))

    call printminmax(n)

    deallocate(x)

    end 

 subroutine printminmax(y)

implicit none

integer, dimension(:), allocatable :: x
integer :: y,max,min,i
   allocate(x(y))
   read(77,*) x
   !print *,'Maximun=', maxval(x)

   !print *,'Minimun=', minval(x

   !initialize the value max & min
max=x(1)
min=x(1)
do i=2,y
    if (x(i)>max) max=x(i)
    if (x(i)<min) min=x(i)
end do
    write(*,*) 'Maximum=',max
write(*,*) 'Minimum=',min

    end subroutine printminmax 

one example of the stack input is

  1000
  5.39524398466520e-01
  9.85099770130787e-01
  7.38946122872518e-01
  6.47771620257608e-01
  8.80871051119695e-01
  2.99375585725816e-02

the error that i take for scientific notation is

   At line 13 of file io.f90 (unit = 77, file = 'input3.dat')
   Fortran runtime error: Bad integer for item 1 in list input

回答1:


ok i found it.I should have double precision on x, no integer.



来源:https://stackoverflow.com/questions/10371511/min-and-max-of-input-array-file-dat-with-subroutine

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!