program main implicit none integer :: n,l,i,j,m real*8, allocatable :: a(:,:),b(:,:),c(:) real*8, allocatable :: avg1,avg2 !1) write(*,*) 'Value of n' do read(*,*) n if (n.gt.0) exit enddo write(*,*) 'Value of l' do read(*,*) l if (l.lt.n.and.l.gt.0) exit enddo allocate(a(n,l)) open(10,file='input') do i=1,n do j=1,l read(10,*) a(i,j) enddo enddo close(10) !2) allocate(b(l,l)) do i=1,l do j=1,l b(i,j)=a(i,j) enddo enddo !3) avg1=0.d0 avg2=0.d0 do i=1,l avg1=avg1+b(i,i) avg2=avg2+b(i,1) enddo avg1=avg1/dble(l) avg2=avg2/dble(l) write(*,*) 'First average', avg1 write(*,*) 'Second average', avg2 if (avg1.gt.avg2) then allocate(c(l)) do i=1,l c(i)=b(i,i)-avg1 enddo else m=n+l allocate(c(m)) do i=1,n c(i)=a(i,1) enddo do i=1,l c(i+n)=b(l,i) enddo endif !4) 100 format(I5,I5,F10.3) 101 format(I5,F10.3) open(10,file='b.dat') do i=1,l do j=1,l write(10,*) i,j,b(i,j) enddo enddo close(10) open(10,file='c.dat') if (avg1.gt.avg2) then do i=1,l write(10,*) i,c(i) enddo else do i=1,m write(10,*) i,c(i) enddo endif deallocate(a) deallocate(b) deallocate(c) end program main