program statvett1 integer::i,n,indxmax,indymax real,allocatable,dimension(:)::x,y real:: xmedia,ymedia,xmax,ymax interface subroutine readdati (x,y,n) integer:: n real,allocatable ,dimension(:)::x,y end subroutine readdati real function vmed(v,n) integer:: n real ,dimension(1)::v end function vmed real function vmin(v,n) integer:: n real ,dimension(1)::v end function vmin real function varianza(v,vmedia,n) integer,intent(in):: n real,intent(in) ,dimension(1)::v real,intent(in) :: vmedia end function varianza subroutine vmax(v,n,vmx,indvmax) integer,intent(in):: n real,intent(in) ,dimension(1)::v integer,intent(out):: indvmax real,intent(out):: vmx end subroutine vmax end interface call readdati (x,y,n) xmedia=vmed(x,n) ymedia=vmed(y,n) call vmax(x,n,xmax,indxmax) call vmax(y,n,ymax,indymax) write(6,*)'xmedia=',xmedia write(6,*)'ymedia=',ymedia write(6,*)'xvar=',varianza(x,xmedia,n) write(6,*)'yvar=',varianza(y,ymedia,n) write(6,*)'xmax=',xmax," all'indice: ",indxmax write(6,*)'ymax=',ymax,' all''indice: ',indymax write(6,*)'xmin=',vmin(x,n) write(6,*)'ymin=',vmin(y,n) end program statvett1 subroutine readdati (x,y,n) integer:: n real,allocatable ,dimension(:)::x,y read(5,*)n allocate (x(n),y(n)) do i=1,n read(5,*) x(i),y(i) enddo end real function vmed(v,n) integer:: n real ,dimension(1)::v vmed=0 do i=1,n vmed=vmed+v(i) enddo vmed=vmed/n end function vmed subroutine vmax(v,n,vmx,indvmax) integer,intent(in):: n real,intent(in) ,dimension(1)::v integer,intent(out):: indvmax real,intent(out):: vmx vmx=v(1) indvmax=1 do i=2,n if(vmx < v(i))then vmx=v(i) indvmax=i endif enddo end subroutine vmax real function vmin(v,n) integer:: n real ,dimension(1)::v vmin=v(1) do i=1,n if(vmin > v(i))vmin=v(i) enddo end function vmin real function varianza(v,vmedia,n) integer,intent(in):: n real,intent(in) ,dimension(1)::v real,intent(in) :: vmedia varianza=0 do i=1,n varianza=varianza+(v(i)-vmedia)**2 enddo varianza=varianza/n end function varianza