Professor Diomar Cesar Lobao

Universidade Federal Fluminense-Volta Redonda, RJ, Brasil

Diomar Cesar


Dept. Ciências Exatas - Exact Science Dept.

Search

array3e.f

 PROGRAM ARRAY3
c
c    This Program contains a misuse of the ALLOCATE statement
c    Once you have set space for an array, you can't use ALLOCATE to
c    stretch the size as more space is needed.
c
c     John Mahaffy 2/2/95
c
      IMPLICIT NONE
      INTEGER I,J,IERR,N,NDAT
c
c    Declare A, B, and C to be arrays to be ALLOCATABLE
c
      REAL, ALLOCATABLE :: A(:),B(:),C(:)
      REAL CSUM,CMAX,CMIN,AVERAGE
c
c
      NDAT=10
      ALLOCATE (A(1:NDAT),B(NDAT),C(NDAT))
      A(1:NDAT) = (/( I, I=1,NDAT)/)
      B(1:NDAT) = (/(I/3, I=1,NDAT)/)
      PRINT *, 'ERROR FLAG =', IERR
      C(1:NDAT)=A(1:NDAT)+B(1:NDAT)
      CSUM=SUM(C(1:NDAT))
      CMIN=MINVAL(C(1:NDAT))
      CMAX=MAXVAL(C(1:NDAT))
C
      AVERAGE=CSUM/NDAT
      WRITE(*,'(//,'' RESULTS FOR ELEMENTS 1 THROUGH '',I3,'' OF C'')')
     & NDAT
      WRITE(6,2002)AVERAGE,CMIN,CMAX
 2002 FORMAT(' AVERAGE OF SELECTED ELEMENTS IN C = ', F8.3,/,
     &       ' MINIMUM OF SELECTED ELEMENTS IN C = ', F8.3,/,
     &       ' MAXIMUM OF SELECTED ELEMENTS IN C = ', F8.3)
      WRITE(6,2003) C(1:NDAT)
 2003 FORMAT(' C = ',/,(1P,8E10.2))
c
      N=NDAT
      NDAT=NDAT+5
      ALLOCATE (A(1:NDAT),B(NDAT),C(NDAT),STAT=IERR)
      PRINT *, 'ERROR FLAG =', IERR
      C(N+1:NDAT)=5.0
      WRITE(6,2003) C(1:NDAT)
      STOP
      END
Skip to content