F90: Ordenação um vetor de N números inteiros
From AdonaiMedrado.Pro.Br
Revision as of 04:04, 4 November 2008 by Adonaimedrado (Talk | contribs)
PROGRAM aula IMPLICIT NONE INTEGER :: i, quantidade INTEGER, DIMENSION(:),ALLOCATABLE :: a WRITE (*,*) "Quantos números deseja digitar?" READ (*,*) quantidade; IF (quantidade > 999) THEN WRITE (*,*) "Quantidade muito grande, digite um número até 999" ELSE ALLOCATE(a(1:quantidade)) WRITE (*,"(A,I3,A)") "Digite",quantidade," números" READ (*,*) (a(i),i=1,quantidade) WRITE (*,*) "Seus,",quantidade,"números foram:" CALL Ordenar(a,1,quantidade) WRITE (*,"(I4.3)") (a(i),i=1,quantidade) DEALLOCATE(a) END IF CONTAINS SUBROUTINE Ordenar(vetor, inicio, fim) IMPLICIT NONE INTEGER, INTENT(IN) :: inicio, fim INTEGER, DIMENSION(:), INTENT(INOUT) :: vetor INTEGER :: auxiliarTroca LOGICAL :: houveTroca houveTroca = .FALSE. IF (inicio /= fim) THEN DO houveTroca = .FALSE. DO i = inicio, fim - 1 IF (Vetor(i) > Vetor(i+1)) THEN auxiliarTroca = Vetor(i+1) Vetor(i+1)=Vetor(i) Vetor(i) = auxiliarTroca houveTroca = .TRUE. END IF END DO IF (.NOT. houveTroca) THEN EXIT END IF END DO END IF END SUBROUTINE END PROGRAM aula