program DriveOrdinamento;
const
NumElementi = 10;
type
TipoElemento = integer;
TipoIndice = 1..NumElementi;
TipoVettore = array [TipoIndice] of TipoElemento;
procedure LeggiVettoreFile (var v : TipoVettore);
var
nome_file : string;
f : text;
i : TipoIndice;
begin
writeln('Nome del file contenente un vettore di ', NumElementi,
' elementi interi?');
readln(nome_file);
assign(f, nome_file);
reset(f);
for i := 1 to NumElementi do
read(f, v[i]);
close(f)
end;
procedure StampaVettore (v : TipoVettore);
var
i : TipoIndice;
begin
for i := 1 to NumElementi do
write(v[i]:5);
writeln
end;
var
vett : TipoVettore;
scelta : char;
begin
LeggiVettoreFile(vett);
writeln;
writeln('Vettore letto:');
StampaVettore(vett);
writeln;
writeln('Scegli uno dei seguenti metodi di ordinamento:');
writeln(' 1: Ordinamento per selezione del minimo');
writeln(' 2: Ordinamento a bolle');
writeln(' 3: Ordinamento a bolle ottimizzato');
writeln(' 4: Ordinamento per fusione');
readln(scelta);
writeln;
case scelta of
'1' : begin
writeln('Vettore ordinato per selezione del minimo:');
SelectionSort(vett);
end;
'2' : begin
writeln('Vettore ordinato a bolle:');
BubbleSort(vett);
end;
'3' : begin
writeln('Vettore ordinato a bolle (versione ottimizzata):');
BubbleSortOttimizzato(vett);
end;
'4' : begin
writeln('Vettore ordinato per fusione:');
MergeSort(vett);
end;
else writeln('Nessun metodo di ordinamento e` stato scelto');
end;
StampaVettore(vett)
end.