program sette implicit none integer :: i,j,n real*8, allocatable :: a(:,:) real*8 :: sum1,sum2,sum3,sum4,tmp !1) open(10,file='input') read(10,*) n allocate(a(n,n)) do i=1,n do j=1,n read(10,*) a(i,j) enddo enddo do i=1,n write(*,*) (a(i,j),j=1,n) enddo !2) sum1=0.d0 sum2=0.d0 do i=1,n-1 sum1=sum1+a(i,i+1) enddo do i=1,n-1 sum2=sum2+a(i+1,i) enddo write(*,*) 'Upper sum',sum1 write(*,*) 'Lower sum',sum2 sum3=0.d0 do i=n,1,-1 sum3=sum3+a(i,n+1-i) enddo write(*,*) 'Antidiagonal sum', sum3 !3) call make_op(a,n,sum4) write(*,*) 'Sum4',sum4 !4) tmp=sum1-sum2-sum3+sum4 open(11,file='output') if (tmp.gt.1.d0) then write(*,*) 'Upper elements printed' do i=1,n-1 write(11,100) a(i,i+1) enddo else write(*,*) 'Lower elements printed' do i=1,n-1 write(11,100) a(i+1,i) enddo endif close(10) close(11) deallocate(a) 100 format(F12.4) stop end program subroutine make_op(a,n,res) implicit none integer, intent(in) :: n real*8, intent(in) :: a(n,n) real*8, intent(out) :: res integer :: i,j,itmp res=1.d0 do i=1,n do j=1,n itmp=i+j if (mod(itmp,2).ne.0) then res=res*a(i,j) endif enddo enddo return end subroutine make_op