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.
Meneame
 
Non ricordi la password?  ››  Iscriviti gratis
 

Esercitazione quattordicesima

tecnica




Inviare l'articolo a Facebook Inviala documento ad un amico Appunto e analisi gratis - tweeter Scheda libro l'a WhatsApp - corso di











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: 1574
Apprezzato: scheda appunto

Commentare questo articolo:

Non sei registrato
Devi essere registrato per commentare

ISCRIVITI

E 'stato utile?



Copiare il codice

nella pagina web del tuo sito.


Copyright InfTub.com 2020