Exercice pascal"trie"

Fermé
abdel2007 Messages postés 34 Date d'inscription lundi 23 octobre 2006 Statut Membre Dernière intervention 18 avril 2009 - 20 nov. 2007 à 14:20
 hayet - 14 janv. 2013 à 09:45
Bonjour,
je veux trie un tableau d'entiers de 20 par exemple pettent m'expliquer comment faire ou je peut trouver sur internet la solution
A voir également:

38 réponses

king_taba Messages postés 1 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007 10
20 nov. 2007 à 15:47
ona trois types d'algorithmes de trie par sélection ,par insertion ou a bull
procedure trie_par_selection(var t:tab ; n:integer);
var
i,j,y,m:integer;
begin
for i := 1 to n-1 do
begin
m:=i;

for j := i to n do
begin
if t[j]<t[m] then
begin
y:=t[i];
t[i]:=t[m];
t[m]:=y;
end;
end;

end;
end;
10
j'ai rien compris!!!!!!!!!!!!!!!!
0
c'est trés bon
0
AMOULA_info Messages postés 3 Date d'inscription lundi 19 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007 9
20 nov. 2007 à 15:00
bonjour abdel2007
il existe plusieurs methode pour le tri d'un tableau ( à bulle, par insertion par selection ....)
voila la methode de tri à bulle en pascal
procedure tri(var t: vecteur; n : integer);
var e: boolean;
i,z: integer;
begin
repeat
e:= false;
for i := 1 to n-1 do
if t[i]>t[i+1] then
begin
z:=t[i];
t[i]:=t[i+1];
t[i+1]:=t[i];
e:= true;
end;
until e = false;
end;
8
salut merci pour l'exercice de tri.je suis un etudiant en premiere année de genie informatique à l'université de bangui.j'ai un exercice de programation en turbo pascal :ecrire un programe qui consiste à trier les voyelles d'un mot entré au clavier.pouvez vous m'envoyer la reponse à mon email? Laouletgerard@yahoo.fr
0
on peu le faire sans booléen


procedure tri(var t: vecteur; n : integer);
var
i,z,e: integer;
begin
repeat
e:= 0;
for i := 1 to n-1 do
if t[i]>t[i+1] then
begin
z:=t[i];
t[i]:=t[i+1];
t[i+1]:=t[i];
e:= 1;
end;
until e = 0;
end;



;)
0
salut, je m'appelle sabri et je suis en 2eme année technologie de l'informatique
0
le code est bien écrit sauf pour la permutation t[i+1]:=z;
0
informatique4_taba Messages postés 17 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007 45
20 nov. 2007 à 15:41
on peut trier un tableau de 20 elements:par la methode de tri par selection.
algrithme suivant
program tri_selection;
uses wincrt;
type
tab=array [1..20]of integer;
var
{declararation des objets globeaux}
procedure saisie(t,n)
procedure tri(t:tab,n:integer);
var
i:integer;
for i:=2 to n do
if t[1]<t[i] then
t[1]:=t[i];
end;
procedure affichage(t,n);
4
informatique4_taba Messages postés 17 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007 45
20 nov. 2007 à 15:21
on utikise la methode de trie à bulle on compare le premier element avec le suivant et si le deuxieme est superieure au premier on affecte la permutation en fesant l'appel au fonction permuter.
Selmi Rochdi
2

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hardouz Messages postés 196 Date d'inscription jeudi 22 février 2007 Statut Membre Dernière intervention 26 novembre 2009 2
20 nov. 2007 à 17:32
Bonjour;
Pour tier un tableau de 20 entiers on a plusieurs methode de tries dont on peut cité le trie par insertion le trie a bulle le trie par selection , shell ...
Exemple ;
on va esseyer de faire un algorithme de trie croissant ensemble pour cela ehhh... on va chercher le plus petit element dans le tableau on le placent dans la premiére case et jetter la valeur de la premiére case du tableau dans celle dont on va permutter ... Mais il ya un probléme non ? si on met la valeur minimale dans la premiére cette derniére elle s'ecrase !!!! alors on doit la stocker dans une variable :)
alors on resume !

0/parcour du tableau de 1 a la case n
1/on cherche la valeur minimale ( le plus petit element dans le tableau ) {avec determination d'indice}
3/on le stoque dans une variable X
4/ on permute cette valeur avec la premiére case
{x<---T[min]
T[min]<---T[i]
T[min]<---x}
5/FIN

Pour un truc recursive il suffit de repeter la meme chose en cherchon le minumum a chaque foix il se stoque dans les registre du processeur virtuellement a la du trie la fonction reprend elle meme les valeur stoquer dans le registre et alors il suffit de réinitialiser les cases de ton tableau !

Exemple ;
soit le principe est que la fonction récursive scinde le tableau en 2 et pour chaque partie appelle de nouveau le tri récursif, la condition d'arrêt survient quand le dernier élément est < ou = au premier.
Dans un premier temps on range le tableau de telle sorte que tous les éléments inférieurs à l'élément d'indice pivot se trouvent placés à la gauche de celui-ci et donc tous les éléments supérieurs à sa droite.Ensuite on appelle à nouveau (récursivement) la procédure MahdyTrie pour chacun des deux sous-tableaux.
Et d'aprés les procedures precedentes je pense que c'est suffisant !
pour plus d'informations tu peut consulter les sites suivant
https://pascal.developpez.com/cours/cyberzoide/chap21.php3
http://lwh.free.fr/pages/prog/logo/logo.htm {conceillé}
vous pourrez trouver d'autres informations intéressantes à l'adresse http://Olivier.sc.free.fr/
et bonne programmation
Ciao Mahdy :)
2
informatique4_taba Messages postés 17 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007 45
20 nov. 2007 à 15:24
procedure trie_par_selection(var t:tab ; n:integer);
var
i,j,y,m:integer;
begin
for i := 1 to n-1 do
begin
m:=i;

for j := i to n do
begin
if t[j]<t[m] then
begin
y:=t[i];
t[i]:=t[m];
t[m]:=y;
end;
end;

end;
end;

{Ahmed Saidi 4SI}
1
informatique4_taba Messages postés 17 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007 45
20 nov. 2007 à 15:39
on utilise le methode trie abule on compare le premie par le deusime et on faire la permutation
1
abdel2007 Messages postés 34 Date d'inscription lundi 23 octobre 2006 Statut Membre Dernière intervention 18 avril 2009 3
20 nov. 2007 à 16:50
merci mais je cherche des solutions avancer on a depaser en cours les traitement iterative et en cherche des solution recursif des programme qui s'appelle elle meme.
1
informatique4_taba Messages postés 17 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007 45
20 nov. 2007 à 17:26
{saidi meryem :je souhaite que ma solution est correcte n'est ce pas?????????????, }
{ la solution:}
k:=t[1];
{ pour i de 1 a 20 faire
begin
if t[i]<k then
permut (k,t[i]);

}

{ mais non je sais que je ne trouve pas la solution maintenant et je veus chercher autre fois}
*****merci *****
***********merci ***************
1
informatique4_taba Messages postés 17 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007 45
20 nov. 2007 à 17:29
program exercice;
uses wincrt;
type
tab=array[1..20]of integer;
var
t:tab;
n:integer;
procedure saisie(var n:integer);
begin
repeat
read(n)
until(n >20);
end;
procedure trie (var t;tab;n:integer)
var
i:integer;
begin
for i:=1 to n-1 do
begin
if t[i+1]>t[i] then
begin
permiter (t[i],t[i+1]);
end;
end;

begin
saisie(n);
trie(t,n);
permeter(t,n);
end.
1
pouvez_vous m'aider à resoudre ces problemes svp et merci d'avance:

ex1

ecrire un programme qui permet de trier par ordre décroissant les éléments d'un tableau Ade n entiers positifs dans un nouveau tableau Bde meme dimension :1-rchercher le maximum de A ,puis , placer ce maximum dans B, ensuite remplacer le maximum par -1

ex2

soit le tableau T1 contenant n lettre majuscule (de A à Z), n étant un entier compris entre 5 et 20
* on désire trier en ordre croissant les éléments de T1 et les ranger dans un tableau T2, 1- chercher la lettre qui a le petit cod ASCII dans T1,et ranger cette lettre dans T2, ensuite remplacer cette lettre par '*' dans T1:
ecrire un prgramme qui permet de : *saisir les éléments T1
*trier les éléments deT1 et les ranger dans T2
*afficher les éléments de T2
0
'randa'_taba Messages postés 1 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007 1
20 nov. 2007 à 17:29
on a plusiers type de tri tel que :tri a bille,insertion,selection...
par exemple on utilise le tri a bulle:
procedure bulle(var t:tab;n:integer);
var
i:integer;
repeat
k:=false;
for i:=1 to n-1 do ;
if t[i]>t[i+1] then
t[i]:=t[i+1];
t[i+1]:=t[i];
until(k=true) and(i>=n);
end;
1
ahm_taba Messages postés 2 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007 1
20 nov. 2007 à 17:32
on peut trier le tableau du minimum au maximum ou inversement on utilison une methode de trie comme par exemple le trie a bulle explication de cette methode:
on doit comparer le premier element par le deuxième si le premier et inferieure au deuxième on appelle une procedure permuter les deux élément et répète ce traitement jusqu'a avoir un tableau trié.
procedure trie (var t:tab,n:integer);
var
i:integer;
begin
for i:=1 to n do
begin
repeat
k:=false;
if t[i]<t[i+1] then
begin
procedure permuter (t[i],t[i+1]);
until
k:=true;
end;
1
AMOULA_info Messages postés 3 Date d'inscription lundi 19 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007 9
20 nov. 2007 à 20:21
Salut
voila une methode recursive de tri par selection
procedure permuter( var x, y : integer);
var z : integer;
begin
z:=x;
x:=y;
y:=z;
end;

function posmin ( t: vect; d,f : integer): integer;
var pm : integer;
begin
if d= f then posmin := d
else
begin
pm := posmin(t,d+1,f);
if t[d]<t[pm] then posmin:= d
else posmin:=pm;
end;
end;

procedure trier ( var t : vect; d,f: integer);
var pm : integer;
begin
if d<>f then
begin
pm := posmin(t,d,f);
if d<>pm then permuter(t[d],t[pm]);
trier(t,d+1,f);
end;
end;
1
informatique4_taba Messages postés 17 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007 45
20 nov. 2007 à 15:38
on peut faire le trie d'un tableau selon plusieurs methode : trie par insertion , trie à bulle, trie par selection ,trie à shell
le plus simple c'est le trie à bulle
procedure bulle (var t:tab;n:integer);
var
k: boolean;
i,r:integer;
begin
repeat
r:=false;
for i:= 1 to n-1 do
begin
if t[i]>t[i+1] then
begin
k:=t[i];
t[i]:=t[i+1};
t[i+1]:=t[i];
k:=true;
end;
until(k=false);
end;
0
informatique4_taba Messages postés 17 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007 45
20 nov. 2007 à 15:39
on peut le trier par l'Analyse suivante:



pour i de 1 à n faire
si t[i+1]>t[i] alors
permuter(t[i],t[i+1]
fin si
fin pour
0
abdel2007 Messages postés 34 Date d'inscription lundi 23 octobre 2006 Statut Membre Dernière intervention 18 avril 2009 3
20 nov. 2007 à 15:40
je veux avoir d'autre de tri avancer oui je connaus les solution iterative comme la selction ou bull tu peu m'aider à une solution recurssiev pour le tri par selection
0
informatique4_taba Messages postés 17 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007 45
20 nov. 2007 à 15:46
on peut realiser le tri d'un tableau par plusieurs méthodes citons le tri à bulle, le tri par selection, le tri par insertion, le tri à shell...
voici une simple methode: vous pouvez affecter la recherche du maximum de ce tableau , le stocker dans un nouveau tableau puis effacer cet élément du premier tableau et ainsi de suite.



{MK 4SI_taba}
0
j ai besoin de votre aide stp envoie moi ton adresse email
0
Utilisateur anonyme
20 janv. 2008 à 22:46
j ai besoin de votre aide stp envoie moi ton adresse email
0
'rim'_taba Messages postés 2 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007
20 nov. 2007 à 17:19
Hi;
sorry i don't know it .
0
212121
0
ahm_taba Messages postés 2 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007 1
Modifié le 19 janv. 2022 à 15:16
salu Ms Adel
bon pour les programme de tries qui utilisent des methodes recursives, je suis en cour de recherche une methode lorsque je la trouve j'vai l'ecrire mais pour le moment vous pouvez consultez www.developper.com
0
hajersoumri_taba Messages postés 1 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007
20 nov. 2007 à 17:29
procedure trie (t:tab;n:integer);
var
i:integer;
begin
for i := 1 to n-1 do
begin
if t[i] >t[i+1]then
begin
y:=t[i];
t[i]:=t[i+1];
t[i+1]:=y;
end;
end;
0