Tri matrice
laminho
-
koukou -
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.
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.
A voir également:
- Tri d'une matrice algorithme
- Comment faire un tri personnalisé sur excel - Guide
- Logiciel tri photo - Guide
- Logiciel algorithme euromillion - Télécharger - Loisirs créatifs
- Vous ne pouvez pas modifier une partie de matrice ✓ - Forum Excel
- Algorithme euromillion excel gratuit ✓ - Forum VB / VBA
2 réponses
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.
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.
SANDOUDAINFO
bounjour, merci pour ce tri mais es-ce qu'il est tri par insertion?
koukou
SVP, le tri par insertion d'une matrice d'entiers!! urgeeeeeeeent!!
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
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