program main implicit none integer :: n, m real*8, allocatable :: re(:), im(:), a(:) real*8 :: v1 integer :: v2 integer :: i,j !1) open(10,file='input.dat') read(10,*) n allocate(re(n)) allocate(im(n)) do i=1,n read(10,*) re(i), im(i) enddo close(10) !2) v1=0.d0 v2=0 do i=1,n if (re(i).eq.im(i)) then v1=v1+re(i)**2 endif if (re(i).eq.0.or.im(i).eq.0) then v2=v2+1 endif enddo write(*,*) 'Value of v1', v1 write(*,*) 'Value of v2', v2 !3) if (v2.gt.0.and.n.gt.v2) then m=n-v2 allocate(a(m)) do i=1,m a(i)=re(i)-v1 enddo elseif (v2.eq.0) then m=2*n allocate(a(m)) do i=1,n j=2*i-1 a(j)=re(i) a(j+1)=im(i) enddo endif !4) if (allocated(a)) then open(10,file='a.dat') do i=1,m write(10,100) i, a(i) enddo deallocate(a) else write(*,*) 'Output file can not be generated' endif 100 format(I5,F10.5) deallocate(re) deallocate(im) stop end program main