Si ho risolto da solo scusa ma avevo dimenticato questo post.
L'ho risolta con una variabile di tipo booleana guarda:

codice:
 repeat
 scambio:= false;
 for i:=1 to (a-1) do
  Begin
   if num[i]<num[i+1] then
    Begin
     scambio:= true;
     appoggio:= num[i];
     num[i]:= num[i+1];
     num[i+1]:= appoggio;
    end;
  end;
 until scambio = false;