M1RAI

MATRIX_SORT

Jan 20th, 2020
115
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. program tri_mat;
  2. uses WinCrt;
  3. type
  4. MAT=array [1..200,1..200] of integer;
  5. var
  6. M:mat;
  7. sl,sc:integer;
  8. OK:Boolean;
  9.  
  10. {***************SAISIE************}
  11. Procedure saisie(var x:integer);
  12. begin
  13.     repeat
  14.         write('x=');
  15.         readln(x);
  16.     until ((x>=1) AND (x<=200));
  17. end;
  18.  
  19.  
  20. {************REMPLISSAGE************}
  21.  
  22. procedure remp (var M:mat ; sl,sc:integer);
  23. var l,c:integer;
  24. begin
  25.     for l:=1 to sl do
  26.         for c:=1 to sc do
  27.         begin
  28.         repeat
  29.             write('donner un entier entre 1 et 5000: ');
  30.             readln(M[l,c]);
  31.         until ((M[l,c] >= 1) AND (M[l,c] <= 5000));
  32.         end;
  33.     writeln;
  34. end;
  35.  
  36.  
  37.  
  38. {************AFFICHAGE**************}
  39.  
  40.  
  41. procedure aff(M:mat ; sl,sc:integer);
  42. var l,c:integer;
  43. begin
  44.     for l:=1 to sl do
  45.         begin
  46.             for c:=1 to sc do
  47.                 begin
  48.                     write(M[l,c],'  ');
  49.                 end;
  50.         writeln;
  51.         end;
  52. end;
  53.  
  54.  
  55. {******************* PERMUTATION*****************}
  56. Procedure permut(x1,x2:integer);
  57. var aux:integer;
  58. begin
  59.     aux:=x1;
  60.     x1:=x2;
  61.     x2:=aux;
  62. end;
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71. {****************TRI D'UNE LIGNE*****************}
  72.  
  73. procedure tril( VAR M:mat; l,sc:integer);
  74. var c:integer; V:Boolean;
  75. begin
  76.     repeat
  77.         V:=TRUE;
  78.         for c:=1 to sc-1 do
  79.         begin
  80.             if (M[l,c] > M[l,c+1]) then
  81.             begin
  82.                 permut(M[l,c],M[l,c+1]);
  83.                 v:=False;
  84.             end;
  85.         end;
  86.         sc:=sc-1;
  87.     until V;
  88. end;
  89.  
  90.  
  91.  
  92. {******************TRI D'UNE COLONNE*****************}
  93. procedure TRIC (var M:mat ; c,sl:integer);
  94. var l:integer; V:Boolean;
  95. begin
  96.     repeat
  97.         V:=true;
  98.         for l:=1 to sl-1 do
  99.         begin
  100.             if (M[l,c]>M[l+1,c]) then
  101.             begin
  102.                 permut(M[l,c],M[l+1,c]);
  103.                 V:=FalsE;
  104.             end;
  105.         end;
  106.         sl:=sl-1;
  107.     until V;
  108. end;
  109.  
  110.  
  111. {***************TRI DES EXTREMITES****************}
  112. Procedure trixt(var m:mat;sl:integer;var ok:Boolean );
  113. var i:integer;
  114. begin
  115.     ok:=true;
  116.     for i:=1 to sl do
  117.     begin
  118.         if (M[i,sc] > M[i+1,1]) then
  119.         Begin
  120.             permut(M[i,sc],M[i+1,1]);
  121.             OK:=false;
  122.         end;
  123.     end;
  124. end;
  125.  
  126.  
  127. {*******************TRI*******************}
  128.  
  129. Procedure TRI(var M:mat; sl,sc:integer);
  130. var l,c:integer; OK:Boolean;
  131. begin
  132.     repeat
  133.         for l:=1 to sl do
  134.         begin
  135.             tril(M,l,sc);
  136.             for c:=1 to sc do
  137.             begin
  138.                 tric(M,c,sl);
  139.             end;
  140.         end;
  141.         trixt(m,sl,ok);
  142.     until ok;
  143. end;
  144.        
  145.                
  146.                
  147.  
  148.        
  149.  
  150.    
  151.        
  152. {*****************PP**************}
  153.  
  154.  
  155.  
  156.  
  157. begin
  158. saisie(sl);
  159. saisie(sc);
  160. remp(m,sl,sc);
  161. writeln('Matrice Initiale');
  162. aff(m,sl,sc);
  163. TRI(M,sl,sc);
  164. writeln('Matrice TriƩ');
  165. aff(m,sl,sc);
  166. end.
RAW Paste Data