Difference between revisions of "F90: Ordenação um vetor de N números inteiros"
From AdonaiMedrado.Pro.Br
(New page: <code lang="fortran"> PROGRAM aula IMPLICIT NONE INTEGER :: i, quantidade INTEGER, DIMENSION(:),ALLOCATABLE :: a WRITE (*,*) "Quantos números deseja digitar?" READ (*,*) quantidade; ...) |
|||
Line 23: | Line 23: | ||
INTEGER, DIMENSION(:), INTENT(INOUT) :: vetor | INTEGER, DIMENSION(:), INTENT(INOUT) :: vetor | ||
INTEGER :: auxiliarTroca | INTEGER :: auxiliarTroca | ||
− | LOGICAL :: houveTroca = .FALSE. | + | LOGICAL :: houveTroca |
+ | houveTroca = .FALSE. | ||
IF (inicio /= fim) THEN | IF (inicio /= fim) THEN |
Revision as of 04:04, 4 November 2008
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