Program StatVett implicit none integer,parameter ::idim=10 real :: vx,vy,temp,somma,vm,sq real, dimension (idim) :: v integer :: i,n,iend ! Legge un file di coppie di numeri (una coppia per riga) ! Supponendo che siano le componenti X e Y di un vettore ! calcola i moduli ! calcola la media dei moduli ! calcola lo scarto quadratico medio ! ! nella istruzione read iostat=iend carica nella variabile iend ! 0 se lettura corretta ! un valore negativo se EOF (End Of File) ! un valore positivo se si e' verificato un errore ! ! ( quando leggo da tastiera EOF e' rappresentato da un Ctrl D ) somma=0 do i=1,idim read(5,*,iostat=iend)vx,vy if(iend /= 0)exit v(i)=sqrt(vx**2+vy**2) somma=somma+v(i) write(6,'(f10.2)')v(i) enddo if (i > idim) then write(6,*)'Errore Array troppo piccolo (',idim,')' else if(iend > 0)then write(6,*)'Errore di lettura :',iend else n=i-1 vm=somma/n write(6,*) 'vmedia=',vm somma=0 do i=1,n somma=somma+(v(i)-vm)**2 enddo sq=somma/n write(6,*) 'scarto quad.=',sq endif endif end