F90: Verificando freqüência de valores em um vetor ordenado

From AdonaiMedrado.Pro.Br
Jump to: navigation, search
PROGRAM aula
	IMPLICIT NONE
	INTEGER :: n,i
	INTEGER, DIMENSION(:), ALLOCATABLE :: V
	WRITE (*,*) "Quantos elementos deseja digitar?"
	READ (*,*) n
	ALLOCATE(V(1:n))
	WRITE (*,*) "Digite seus elementos"
	READ (*,*) (V(i),i=1,n)
	CALL IdenficarFrequencia(V)
	DEALLOCATE(V)
CONTAINS
	SUBROUTINE IdenficarFrequencia(Vetor)
		IMPLICIT NONE
		INTEGER, DIMENSION(:), INTENT(IN) :: Vetor
		INTEGER :: ElementoCorrente, ElementoSendoAnalisado, &
				Frequencia
		INTEGER :: i
		i = 1		
		Frequencia = 1
		ElementoCorrente = Vetor(i)
		DO			
			IF (i==Size(Vetor)) THEN
				EXIT
			END IF
 
			i = i + 1
			ElementoSendoAnalisado = Vetor(i)
			IF (ElementoCorrente == ElementoSendoAnalisado) THEN
				Frequencia = Frequencia + 1
			ELSE
				WRITE (*,*) "Frequencia",ElementoCorrente,"=",Frequencia
				Frequencia = 1
				ElementoCorrente = ElementoSendoAnalisado
			END IF
		END DO
		WRITE (*,*) "Frequencia",ElementoCorrente,"=",Frequencia
	END SUBROUTINE
END PROGRAM aula