PROGRAM Ortalama
!--------------------------------------------------------
! 10prg01.f95
! N sayının standart sapması ve ortalamasının
! dinamik dizi ile hesabı.
!--------------------------------------------------------
INTEGER :: N, D, k
REAL, ALLOCATABLE :: X(:)
REAL ::  Std_Sap, Toplam, Ort

  ! eleman saysını belirleniyor
  PRINT *,"Eleman sayısını girin:"
  READ  *,N

  ! N tane bellek bloğu isteniyor
  ALLOCATE(X(N),STAT=D)

  ! Boş yer varmı sorgulanıyor
  IF(D/=0) STOP "Yetersiz bellek Alanı."

  ! Dizi kullanılıyor
  ! Aritmetik ortalama hesaplanıyor
  PRINT *,"Dizinin elemanlarını girin:"
  Toplam = 0.0
  DO K = 1, N
   READ *,X(K)
   Toplam = Toplam + X(K)
  END DO

  Ort = Toplam/N

  ! Standart sapma hesaplanıyor
  Toplam = 0.0
  DO K = 1, N
    Toplam = (Ort - X(K))**2
  END DO

  ! bellek bloğu boşaltılıyor
  DEALLOCATE(X)

  Std_Sap = SQRT(Toplam/(N-1))

  PRINT *,"Ortalama : ",Ort
  PRINT *,"Standart sapma: ",Std_Sap

END PROGRAM Ortalama