Caricare documenti e articoli online 
INFtub.com è un sito progettato per cercare i documenti in vari tipi di file e il caricamento di articoli online.


 
Non ricordi la password?  ››  Iscriviti gratis
 

Esercitazione quattordicesima

tecnica













Esercitazione quattordicesima






In questa esercitazione č presentata la codifica in Pascal di un programma che, ricevuti in ingresso due array di interi giā parzialmente ordinati, li memorizzi in due file ed operi il merge sort restituendo un array ordinato.


Programma MergeSort tra file (XIV)




Program Mergesort_file ;

uses crt ;

const max = 4 ;

const maxmerge = 9 ;

var vettfirst : file of integer ;

var vettsecond : file of integer ;

var vettmerge : file of integer ;

var first : array[ 1..max ] of integer ;

var second : array[ 1..max ] of integer ;

var final : array[ 1..maxmerge ] of integer ;

var a, b, c, d, i, j : integer ;


procedure mergesort ;

begin

reset ( vettfirst ) ;

reset ( vettsecond ) ;

i:=1 ;

j:=1 ;

a:=1 ;

read ( vettfirst , first [ i ] ) ;

read ( vettsecond , second [ j ] ) ;

repeat if first [ i ] > second [ j ] then begin

final [ a ] := second [ j ] ;

write ( vettmerge, final [ a ] ) ;

j := j +1 ;

if j < max +1 then read ( vettsecond, second [ j ] ) ;

end

else begin

final [ a ] := first [ i ] ;

write ( vettmerge, final [ a ] ) ;

i := i +1 ;

if i < max +1 then read ( vettfirst , first [ i ] ) ;

end ;

a := a +1 ;

until ( ( i > max ) or ( j > max ) ) ;

repeat if j = max +1 then begin  

final [ a ] := first [ i ] ;

write ( vettmerge, final [ a ] ) ;

i := i +1 ;

if i < max+1 then read ( vettfirst, first [ i ] ) ;

end

else if i = max+1 then begin

final [ a ] := second [ j ] ;

write ( vettmerge, final [ a ] ) ;

j := j+1 ;

if j < max+1 then read ( vettsecond, second [ j ] ) ;

end;

a:= a+1 ;

until a = maxmerge ;  

end ;




begin

clrscr;

assign ( vettfirst , ' vettfirst_in.typ ' ) ;  

assign ( vettsecond , ' vettsecond_in.typ ' ) ;

assign ( vettmerge , ' vettmerge_out.typ ' ) ;

rewrite ( vettmerge ) ;

rewrite ( vettfirst ) ;  

for i:=1 to max do begin

write ( ' Inserire il ', i , ' o valore del 1 o vettore: ' ) ;

readln ( b);

first [ i ] := b ;

write ( vettfirst, first [ i ] ) ;

end;

writeln ( ' ' ) ;

rewrite ( vettsecond ) ; 

for j:=1 to max do begin

write ( ' Inserire il ', j , ' o valore del 2 o vettore: ' ) ;

readln ( c ) ;

second [ j ] := c ;

write ( vettsecond, second [ j ] ) ;

end;

mergesort;

writeln ( ' ' ) ;

writeln ( ' Il file ordinato secondo l''ordinamento mergesort e'': ' ) ;

reset ( vettmerge ) ;

for a :=1 to 2*max do begin

read ( vettmerge, final [ a ] ) ;

write ( a, ' o componente: ' ) ;

writeln ( final [a] ) ;

end ;

readln ;

end .




Privacy




Articolo informazione


Hits: 2112
Apprezzato: scheda appunto

Commentare questo articolo:

Non sei registrato
Devi essere registrato per commentare

ISCRIVITI



Copiare il codice

nella pagina web del tuo sito.


Copyright InfTub.com 2024