Concetti Chiave
- La procedura OrdinaClick consente di ordinare un array di 20 numeri interi sia in ordine crescente che decrescente utilizzando il metodo bubble sort.
- Il controllo Decrescente.Checked determina se l'ordinamento deve essere eseguito in ordine decrescente; in caso contrario, l'ordine sarà crescente.
- Durante l'ordinamento decrescente, un ciclo while e un ciclo for vengono utilizzati per scambiare gli elementi dell'array finché non sono tutti ordinati.
- Nell'ordinamento crescente, due cicli for annidati sono usati per confrontare e scambiare gli elementi dell'array in modo iterativo.
- Una volta completato l'ordinamento, l'array ordinato viene stampato su una StringGrid, mostrando i risultati.
procedure TForm1.OrdinaClick(Sender: TObject);
const
n = 20;
var
i,j,k,aux,tmp,lim: integer;
trovato: boolean;
vett:array [1..20] of integer;
begin
if Decrescente.Checked then
begin {inizia l'ordinamento decrescente}
lim:=n;
trovato:=true;
while (lim>0) and (trovato=true) do
begin
trovato:=false;
for i:=1 to lim-1 do
begin
if vett
tmp:=vett;
vett:=vett[i+1];
vett[i+1]:=tmp;
trovato:=true;
end;
end;
lim:=lim-1;
end; {finisce l'ordinamento decrescente}
for i:=1 to 20 do {inizio stampa dell'array ordinato su string grid}
begin
k:=i-1;
StringGrid1.Cells[k,1]:=IntToStr(vett);
end; {fine stampa dell'array ordinato}
end
else
begin {inizia l'ordinamento crescente}
for j := n downto 2 do
for i := 1 to j-1 do
begin
if vett > vett[i+1] then
begin
aux := vett;
vett := vett[i+1];
vett[i+1] := aux;
end;
end;{finisce l'ordinamento crescente}
for i:=1 to 20 do {inizio stampa dell'array ordinato su string grid}
begin
k:=i-1;
StringGrid1.Cells[k,1]:=IntToStr(vett);
end;
end; {fine stampa dell'array ordinato}
end; {fine della procedura}