Tri matrice

laminho -  
 koukou -
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. xXx
     
    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.
    5
    1. SANDOUDAINFO
       
      bounjour, merci pour ce tri mais es-ce qu'il est tri par insertion?
      0
    2. koukou
       
      SVP, le tri par insertion d'une matrice d'entiers!! urgeeeeeeeent!!
      0
  2. michelhoude Messages postés 47 Statut Membre 11
     
    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
    0