Я пытаюсь написать программу, чтобы найти среднее значение, медиану, режим целочисленного массива, но у меня возникли некоторые сложности при поиске режима.Ниже приведен код, который я написал до сих пор.
Сначала программа предложит пользователю ввести значение числа целых чисел, которое будет введено, а затем запрос на ввод этого числа целых чисел.Затем целые числа сортируются в порядке возрастания, а среднее и медиана находятся.
Проблема, с которой я сталкиваюсь, это когда я пытаюсь перейти в режим.Я умею считать количество повторений повторяющихся значений.Найдя значение с наибольшей частотой, мы сможем найти режим.Но я не уверен, как это сделать.Есть ли в Фортране какая-либо встроенная функция для вычисления числа вхождений входных значений и значения с наибольшим вхождением?
PROGRAM STATISTICS
!Created by : Rethnaraj Rambabu
IMPLICIT NONE
REAL, DIMENSION(:), ALLOCATABLE:: VAL
REAL TEMP, MEDIAN
REAL EVEN, MEAN, SUM, FMODE
INTEGER N, I,J
WRITE(*,*)' WHAT IS THE VALUE FOR N? '
READ(*,*) N
ALLOCATE(VAL(N))
WRITE(*,*) 'ENTER THE NUMBERS'
OPEN(1,FILE='FILE.TXT')
READ(1,*)(VAL(I),I=1,N)
CLOSE(1)
WRITE(*,*) VAL
!/---FOR SORTING----/!
DO I=1,N-1
DO J=1,N-1
IF(VAL(J) > VAL(J+1)) THEN
TEMP=VAL(J)
VAL(J)=VAL(J+1)
VAL(J+1)=TEMP
END IF
END DO
END DO
WRITE(*,*) VAL
!/-----MEDIAN----/!
IF ((N/2*2) /= N) THEN
MEDIAN=VAL((N+1)/2)
ELSE IF ((N/2*2) == N) THEN
EVEN= (VAL(N/2)+VAL((N+2)/2))
MEDIAN=EVEN/2
END IF
WRITE(*,*)'MEDIAN=', MEDIAN
!/----MEAN----/
SUM=0
DO I=1,N
SUM=SUM+VAL(I)
END DO
MEAN=SUM/N
WRITE(*,*)'MEAN=', MEAN
!/------MODE----/
FMODE=1
DO I=1,N-1
IF (VAL(I) == VAL(I+1)) THEN
FMODE=FMODE+1
END IF
END DO
WRITE(*,*)FMODE
END PROGRAM
FILE.TXT
содержит
10 8 1 9 8 9 9 7 5 9 3 5 6