PROGRAM Medyan_Hesabi !----------------------------------------------------- ! 10prg02.f95 ! Dinamik dizi ile N tane sayının medyanı. ! ! Median(3,4,4,5,6,8,8,8,10) = 6.0 ! Median(5,5,7,9,11,12,15,18) = (9+11)/2.0 = 10.0 !----------------------------------------------------- IMPLICIT NONE INTEGER, ALLOCATABLE :: A(:) INTEGER :: N, Durum PRINT *,"Eleman sayısı (N)?" READ *,N ALLOCATE(A(N),STAT=Durum) IF(Durum /=0 ) STOP "Yetersiz bellek alanı." PRINT *,N , " tane sayı girin:" READ *,A PRINT *,"Bu kümenin medyanı ",Median(A) DEALLOCATE(A) CONTAINS REAL FUNCTION Median(A) !--------------------------------------------------- ! A dizisinin medyanını hesaplar. !--------------------------------------------------- INTEGER, INTENT(INOUT) :: A(:) INTEGER :: K,J,N,Gec ! Dizinin boyutu N = SIZE(A) ! Kabarcık sıralama ile küme elemanları ! küçükten büyüğe doğru sıralanıyor DO K=1,N DO J=1,N-1 IF(A(J) < A(J+1)) THEN Gec = A(J) A(J) = A(J+1) A(J+1) = Gec END IF END DO END DO ! Medyanı hesapla IF(MOD(N,2)==1) THEN ! tek sayılı Median = A((N+1)/2) ELSE ! çift sayılı elemanlar Median = (A(N/2)+A(N/2+1))/2.0 END IF END FUNCTION Median END PROGRAM Medyan_Hesabi