Tri matrice

Bonjour,
SVP m'aider à trouver une solution pour trier une matrice en pascal(tri par sélection),
J'ai essayé avec ce programme pascal mais il une petite erreu que j'ai pas compris
(lors de l'exécution la matrice n'est pas totalement triée)

voila le programme en pascal
PROGRAM tri_par_selection;
Uses wincrt;
type
mat = array[1..100 , 1..100] of integer;
var
n, i, j : integer;
procedure saisir(var x: integer);
begin
writeln('donner le nb de colonnes et de lignes ');
readln(x);
end;
procedure remplir(var m: mat ; n: integer);
begin
for i := 1 to n do
begin
for j:= 1 to n do
begin
writeln('donner mat[' , i, ' ' , j, '] ');
readln(m[i,j]);
end;
end;
end;

function posmin ( m:mat; n, i,j: integer; var poslign, poscol : integer);
var k : integer;
begin
petit_ligne := i;
petit_clon:= j
for k := i+ 1 to n do
for p ;= i + 1 to n do
if (t[petit]> t[j]) then petit := j;
posmin := petit;
end;

procedure permuter( var a, b: integer);
var sauv : integer;
begin
sauv := a;
a :=b;
b := sauv;
end;

procedure tri_select(var t: tab; n: integer);
var
pm: integer;
begin
for i:= 1 to n-1 do
begin
posmin ( t, n, i,j , poslign, poscol);

permuter(mat[i,j] , mat[poslign, poscol]);

end;

PROCEDURE AFFICHE (T : Tab ; n : integer) ;
BEGIN
For i := 1 To n Do WriteLN (TI]);
END;

BEGIN
saisir(n);
remplir(t,n);
TRI_SELECT(T, n) ;
AFFICHE (T, n) ;
END.
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. je m' appelle xXx voila la repence de votre probleme:

    program trimatrice;
    uses wincrt;
    type
    tab=array [1..10,1..10] of integer;
    var
    t:tab;
    n:integer;

    procedure saisie(var t:tab;var n:integer);
    var i,j:integer;
    begin

    repeat
    writeln('donner ta taille');
    readln(n);
    until (n>=2) ;

    for i:=1 to n do
    for j:=1 to n do
    begin
    writeln('donner t[',i,',',j,']=');
    readln(t[i,j]);
    end;
    end;

    procedure tri(var t:tab;n:integer);
    var i,j,c,l:integer;

    procedure posmin(t:tab;n,i,j:integer;var l,c:integer);
    var ligne,col:integer;
    begin
    l:=i;c:=j;
    for ligne:=i to n do
    begin
    for col:=j+1 to n do

    if (t[ligne,col]<t[l,c])then
    begin
    l:=ligne;
    c:=col;
    end;
    j:=0;
    end;
    end;

    procedure permut(var x,y:integer);
    var aux:integer;
    begin
    aux:=x;
    x:=y;
    y:=aux;
    end;

    begin
    for i:=1 to n do
    for j:=1 to n do
    begin
    posmin(t,n,i,j,l,c);

    if (i<>l)or (j<>c) then
    permut(t[i,j],t[l,c]);
    end;
    end;

    procedure affichage(t:tab;n:integer);
    var i,j:integer;
    begin
    for i:=1 to n do
    begin
    for j:= 1 to n do

    write(t[i,j]:4);
    writeln;
    end;
    end;

    begin
    saisie(t,n);
    tri(t,n);
    affichage(t,n);
    end.
    1. bounjour, merci pour ce tri mais es-ce qu'il est tri par insertion?
    2. SVP, le tri par insertion d'une matrice d'entiers!! urgeeeeeeeent!!
  2. Bonjour, je pense qu'il y a erreur dans le code
    La FONCTION
    function posmin ( m:mat; n, i,j: integer; var poslign, poscol : integer); DEVRAIT AVOIR UN TYPE
    Par exemple
    Ça pourrait être function posmin ( m:mat; n, i,j: integer; var poslign, poscol : integer):integer;

    Les variables petit_ligne , petit_clon ne sont pas déclarées

    Sans être un spécialiste de turbo Pascal, bien que j'ai fait beaucoup de d'appliation, J'ai essayé le code dans l'environnement de turbo pascal 5.5

    Il y a des erreurs lors de la compilation
    La variable m:mat déclarée dans les paramètres de la fonction n'est pas utilisé dans la fonction

    j'ai essayé tant bien que mal à répondre à votre question

    Je peux regarder dans mes archives quelques Algorithm de tri

    Cordialement
    Michel Houde