![]() | ![]() |
|
|
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
Commentare questo articolo:Non sei registratoDevi essere registrato per commentare ISCRIVITI |
Copiare il codice nella pagina web del tuo sito. |
Copyright InfTub.com 2025