Bonjour
J'ai un exercice et je demande juste si mon raisonnement est bon, merci de votre aide

Ecrire un rogramme contenant une procédure qui reçoit un tableau
d'entiers non trié et sa longueur effective en paramètres, et qui y déplace
en fin de tableau tous les éléments dépassant une valeur donnée (ici 10).
Hormis le critère de déplacement, l'ordre du tableau doit être respecté.
Ex.: si x=10, alors 5,12,-8,27,1,17 devient 5,-8,1,12,27,17.
Le traitement doit se faire en un seul passage. (Hypothèse inductive)
Mon raisonnement est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
procedure deplacer(const x:Integer;var t:tableau; const long:Integer);
 
  var
    i,j,k,tmp :Integer;
  begin
    if long>1 then  
      begin
 
        j:=1;
        while (j<long)and(t[j]<x) do
          inc(j);          
 
        for i:=j to long do
 
            if t[i]<=x then
              begin
                tmp:=t[i];
                for k:=i downto j+1 do
                  t[k]:=t[k-1];
                t[j]:=tmp;
                inc(j)
              end
      end
  end;