Я пытаюсь создать массив частот для данного массива на Fortran 95. Например, если у меня есть массив (\ 1 2 4 2 4 2 5), массив частот должен быть числом раз, которое появляется каждый элемент; (\ 1 3 2 3 2 3 1). Таким образом, поскольку в исходном массиве только 1 из 5, последняя запись в новом массиве равна 1, а в исходном массиве есть 3 из 2, соответствующие записи в новом массиве равны 2.
Ниже приведен пример кода, который у меня есть, но я продолжаю получать ошибки. Мне было интересно, если кто-нибудь захочет дать мне некоторое руководство и помощь в том, что я могу делать неправильно. Это было бы очень ценно.
Я не включил часть кода, которая генерирует мой исходный массив, потому что я почти уверен, что он правильный, поэтому здесь просто подпрограмма для частотного массива. Также исходный массив был отсортирован в порядке возрастания вне этой подпрограммы. Возможно, я не передал исходный массив, num (i) правильно ??
INTEGER, DIMENSION(100)::num(100)
INTEGER, DIMENSION(100)::freq(100)
INTEGER:: i=0, k=0, numinteger, count=0
CALL FreqArray(num, numinteger,freq)
SUBROUTINE FreqArray(num, numinteger, freq)
INTEGER, INTENT(IN):: num(100), numinteger
INTEGER, INTENT(OUT):: freq(100)
DO i=1,9
count=0
DO k=1, numinteger
IF (num(k)==i)THEN
count=count+1
END IF
END DO
freq(i)=count
END DO
PRINT*, "Frequency of Digits"
PRINT*, " "
WRITE(*,'(1X,A,T35,A)'),"Digit","Frequency"
WRITE(*,'(1X,I1,T35,I1)'),num(i),freq(i)
END SUBROUTINE
Большое спасибо за ваше время.