PDA

Visualizza la versione completa : [FORTRAN] Ordinamento vettore


turtle87
06-12-2008, 13:36
PROGRAM PARDIS

C Dato un array monodimensionale di interi costruire, a partire dai
C valori contenuti in questo, un nuovo array in cui ci sono prima
C tutti i valori pari del primo array e poi tutti quelli dispari.

INTEGER MAX
PARAMETER (MAX=10)
INTEGER DIM
INTEGER VETTORE(DIM), I
CALL DIMENSIONE (DIM)
CALL VERIFICA (DIM)
CALL LEGGIVETTORE(DIM, VETTORE)
CALL SCRIVIVETTORE (DIM, VETTORE)
CALL ORDINAMENTO (VETTORE, DIM)
PRINT*, "IL VETTORE ORDINATO :"
PRINT*, (VETTORE(DIM), I=1, DIM)
STOP
END

SUBROUTINE DIMENSIONE (A)
PARAMETER(MAX=10)
INTEGER A
PRINT*, "SCRIVI LE DIMENSIONI DEL VETTORE"
READ*, A
RETURN
END

SUBROUTINE VERIFICA (B)
INTEGER MAX
PARAMETER(MAX=10)
INTEGER B
IF (B .LT. MAX) THEN
PRINT*, "DIMENSIONE NON VALIDA"
ENDIF
RETURN
END

SUBROUTINE LEGGIVETTORE (B, VETTORE)
INTEGER B, VETTORE(B), I
DO 10, I=1, B
READ*, VETTORE(I)
10 CONTINUE
RETURN
END

SUBROUTINE SCRIVIVETTORE (N, VETTORE)
INTEGER I, VETTORE(I), N
PRINT*, "IL VETTORE STAMPATO :"
DO 10, I=1, N
PRINT*, VETTORE (I)
10 CONTINUE
RETURN
END

SUBROUTINE ORDINAMENTO (VETTORE, N)
INTEGER PRIMO, SECONDO, N, I, INDEX, TEMP, VETTORE(N)

DO 10, I=1, N-1
PRIMO=VETTORE(I)
INDEX=I

DO 20, J=I+1, N
SECONDO=VETTORE(J)
IF(MOD(SECONDO, 2) .EQ. 0) THEN
PRIMO=SECONDO
INDEX=J
ENDIF
20 CONTINUE
IF (INDEX .NE. I) THEN
TEMP = VETTORE(I)
VETTORE(I) = VETTORE(INDEX)
VETTORE(INDEX) = TEMP
ENDIF

10 CONTINUE
RETURN
END


Ho provato a compilarlo (non so se vi siano errori logici, ma per il momento non mi interessa), ma mi trova errori di link. Qualcuno mi pu aiutare a capire dove sono (me li segnale nelle righe del programma principale)?

Loading