| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 
 |  
 
const SUITELONGMAX = 50;
 
type element = integer;
type suite = record
             contenu : array[1..SUITELONGMAX] of element;
             long : 0..SUITELONGMAX;
             end;
 
 
var     s : suite;
        m, k : integer;
 
{Procedure de génération aléatoire d'une suite de longueur m}
 
procedure GenAleatSuite(m : integer; var s : suite);
var i : integer;
begin
 
  s.long:=m;
 
  for i:=1 to m do
    begin
      s.contenu[i]:=random(99);
    end;
end;
 
{Procedure d'affichage d'un suite entre les indices k et s.long}
 
procedure AfficheSuite(var s : suite);
begin
 
  AffSuiteRec(1);
  writeln;
  writeln;
 
end;
 
{Echange de deux elements de la suite}
 
procedure echange (var a,b : integer);
var temp: integer;
begin
  temp := a;
  a := b;
  b := temp;
end;
 
 
{Tri par selection du minimum}
 
procedure TriMin(var s : suite);
 
  {Fonction permettant de trouver l'indice du minimum de la suite compris    entre l'indice k et s.long }
 
  function SelectMin(k : integer ; var min : integer): integer;
 
  var result : integer;
 
  begin
 
    if (k > s.long) then SelectMin := min
    else
       begin
 
         if (s.contenu[k] < s.contenu[min]) then min := k;
         SelectMin := SelectMin(k+1,min);
 
       end;
 
  end;
 
  { Tri récursif entre l'indice k et s.long}
 
  procedure TriMinRec(k : integer);
  begin
 
    if k <= s.long then
      begin
        echange(s.contenu[k], s.contenu[SelectMin(k,k)]);
        TriMinRec(k+1);
      end;
  end;
  {Tri récursif entre 1 et s.long}
begin
  TriMinRec(1);
end;
 
  {Programme principal}
 
begin
 
  randomize;
  GenAleatSuite(10, s);
  AfficheSuite(s);
  writeln('longueur de la suite : ',s.long);
  TriMin(s);
  AfficheSuite(s);
 
end. | 
Partager