Home Exercices Exercices et problèmes de révisions Tri d'un tableau de caractères
Bookmark and Share

Liens sponsorisés

Login Form



Tri d'un tableau de caractères Print E-mail
Written by Administrator   
Enoncé de l'exercie
Soit un tableau T1 contenant N lettres majuscule(de A à Z), n étant un entier compris entre 5 et 20.
On désire triés en ordre croissant les éléments de T1 et les ranger dans un tableau T2 en utilisant le principe suivant :
1. chercher la lttre qui a le plus petit code ASCII dans T1.
2. a) ranger cette lettre dans T2.
b) remplacer cette lettre par '*' dans T1.
3. répéter n fois les étapes 1 et 2.
Ecrire un programme Pascal qui permet de :
* saisir les éléments de T1.
* trier les éléments de T1 et les ranger dans T2.
* afficher les éléments de T2

Solution en Pascal
{
La résolution de ce problème demande :
_ Deux tableaux de 20 caractères au max.
_ Une procedure Saisie permettant de saisir le tableau t1 et sa dimension n.
_ Une procedure Trier qui permet de remplir le tableau T2 avec les éléments
de t1 triés dans l'ordre croissant.
_ Une procedure Afficher qui affiche les éléments de T2 apres le tri.
}
program triage;

uses wincrt;

type tab= array[1..20] of char;

var t1,t2:tab;
n:integer;

{ La fonction recherche cherche l'indice de l'élément de T1 qui a le plus petit code Accii .}

function recherche (t1:tab;n:integer):integer;

var i,ordmin,indmin:integer;

begin
ordmin:=255;
for i:=1 to n do
if (t1[i] <> '*') and (ord(t1[i])< ordmin) then
begin
ordmin:=ord(t1[i]);
indmin:=i;
end;
recherche:=indmin;
end;

{ Procedure Trier }

procedure trier (var t1,t2:tab; n:integer);
var i,indmin: integer;
begin
for i:=1 to n do
begin
indmin:=recherche(t1,n);
t2[i]:=t1[indmin];
t1[indmin]:='*';
end;
end;

{ Procedure saisie
les éléments de T1 doivent être des lettres majuscules }

procedure saisie(var t1: tab ; var n: integer);
var i:integer;

begin
write('Donner la dimension de votre tableau :');
repeat
read(n);
until (n in [5..20]);

writeLN('Saisir maintenant des lettres majuscules :');
for i:= 1 to n do
repeat
read(t1[i]);
until(t1[i] in ['A'..'Z']);

end;

{ Procedure Afficher }

procedure afficher (t2: tab; n: integer);

var i:integer;

begin
writeLN('Les lettres Triées dans l''ordre croissant :');
for i:=1 to n do
writeln(t2[i]);
end;

{ Le programme principal }

begin

saisie(t1,n);
trier(T1,T2,n);
afficher(t2,n);
end.
 

 

Liens sponsorisés