program exercise implicit none integer :: n,np,i,k real*8, allocatable :: a(:) integer, allocatable :: tmp(:) real*8 :: ieven,even,odd !1) do write(*,*) 'Array size (>1)' read(*,*) n if (n.gt.1) exit enddo allocate(a(n)) write(*,*) 'Array' read(*,*) a !2) even=0 do i=2,n,2 even=even+a(i) enddo odd=0 do i=1,n,2 odd=odd+a(i) enddo write(*,*) 'Value of even', even write(*,*) 'Value of odd', odd !3) if (even.gt.odd) then np=n/2 allocate(tmp(np)) k=0 do i=2,n,2 k=k+1 tmp(k)=int(a(i)) enddo call bubble(tmp,np) else a=a+even endif !4) open(10,file='out.dat') if (even.gt.odd) then do i=1,np write(10,100) i,tmp(i) enddo deallocate(tmp) else do i=1,n write(10,101) i,a(i) enddo deallocate(a) endif close(10) 100 format(2(I4)) 101 format(I4,F10.3) stop end program exercise subroutine bubble(x,n) implicit none integer, intent(in) :: n integer, intent(inout) :: x(n) integer :: i,j do i=1,n do j=2,n-(i-1) if (x(j-1).lt.x(j)) then call swap(x(j-1),x(j)) endif enddo enddo return end subroutine bubble subroutine swap(x,y) implicit none integer, intent(inout) :: x,y integer :: tmp tmp=x x=y y=tmp return end subroutine swap