************************************************************************ * File: sortmain.for ************************************************************************ * Scopo: utilizza i moduli per l'ordinamento realizzati dai file * - bubsort.for * - selsort.for * - inssort.for * Effettua lettura da file ************************************************************************ PROGRAM SortMain * Istruzioni dichiarative IMPLICIT NONE * Dichiarazioni di tipo per le costanti INTEGER dim CHARACTER*12 nomefilein, nomefileout * Definizioni delle costanti PARAMETER (dim = 10) PARAMETER (nomefilein = 'VETT.TXT', nomefileout = 'SORTED.TXT') * Dichiarazioni delle variabili INTEGER i INTEGER origvett(dim), ordvett(dim) * Subroutine usate: * BubSort (INTEGER(*), INTEGER) * SelSort (INTEGER(*), INTEGER) * InsSort (INTEGER(*), INTEGER) * Istruzioni esecutive * lettura vettore da file OPEN (9, FILE = nomefilein) READ (9,*) (origvett(i), i=1,dim) CLOSE (9) WRITE (*,*) 'Vettore letto dal file VETT.TXT:' * stampa del vettore letto su video, tutti gli elementi SULLA STESSA riga WRITE (*,100) (origvett(i), i=1,dim) * copia del vettore letto, ... DO 10 i = 1, dim ordvett(i) = origvett(i) 10 CONTINUE * ordinamento della copia a bolle ... CALL BubSort (ordvett, dim) * e stampa su video del vettore ordinato WRITE (*,*) 'Dopo l''ordinamento a bolle:' WRITE (*,100) (ordvett(i), i=1,dim) * copia del vettore letto, ... DO 20 i = 1, dim ordvett(i) = origvett(i) 20 CONTINUE * ordinamento della copia per selezione del minimo ... CALL SelSort (ordvett, dim) * e stampa su video del vettore ordinato WRITE (*,*) 'Dopo l''ordinamento per selezione del minimo:' WRITE (*,100) (ordvett(i), i=1,dim) * copia del vettore letto, ... DO 30 i = 1, dim ordvett(i) = origvett(i) 30 CONTINUE * ordinamento della copia per inserzione ... CALL InsSort (ordvett, dim) * e stampa su video del vettore ordinato WRITE (*,*) 'Dopo l''ordinamento per selezione del minimo:' WRITE (*,100) (ordvett(i), i=1,dim) * stampa del vettore ordinato su file OPEN (8, FILE = nomefileout) WRITE (8,*) 'Vettore ordinato salvato sul file SORTED.TXT' WRITE (8,100) (ordvett(i), i=1,dim) CLOSE (8) STOP * Istruzioni FORMAT 100 FORMAT(10I6) END