- Exercice pascal corrigé bac
- Turbo pascal - Télécharger - Édition & Programmation
- Dev pascal - Télécharger - Édition & Programmation
- Resultat bac 2025 - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Archives résultats bac 1988 ✓ - <a href="https://forums.commentcamarche.net/forum/reseaux-sociaux-10">Forum Réseaux sociaux</a>
38 réponses
- 1
- 2
On cherche à trier un tableau de 20 entiers et à identifier des méthodes pratiques pour obtenir un ordre croissant ou décroissant, en s'appuyant sur des exemples concrets.
Plusieurs solutions y sont évoquées, notamment le tri à bulle, le tri par insertion et le tri par sélection, avec des exemples en Pascal et des variantes simplifiées.
Des extraits de code illustrent ces approches, des procédures en Pascal pour chaque méthode et des indications sur le rangement des éléments et les échanges entre positions.
En cas de petites tailles comme vingt éléments, le choix peut privilégier la simplicité ou la clarté du code plutôt que l'optimisation pure, car les gains de complexité ne justifient pas toujours l'effort.
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;
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;
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);
Selmi Rochdi
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPour 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 :)
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}
{ 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 ***************
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.
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
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;
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;
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;
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;
pour i de 1 à n faire
si t[i+1]>t[i] alors
permuter(t[i],t[i+1]
fin si
fin pour
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}
- 1
- 2