ED n°10 --- Algoritmique et Programmation |
procedure
ordre(A,B:
in
out Integer) is
-- A la fin de
l'exécution,
A contient la plus grande valeur
tmp:Integer:=A;
begin
if
(A<B)
then
A:=B;B:=tmp;
end if;
end ordre;
Question 1
On souhaite trier un tableau de Cartes. Chaque Carte est caractérisée par un numéro (Positif), un nom (chaine de caractères) et une catégorie dont les valeurs possibles sont (poussin, minime, cadet, junior, senior, veteran). On trie les Cartes selon leur numéro.
-- soit à trier
le tableau t(a..b)
-- soit n un indice du
tableau
début
n <- b;
tant que n>a faire
pour
i dans a..n-1 faire
ordre(t(i),t(i+1));
fin
pour;
n <-
n-1;
fin tant que;
fin;
Question 4
type tabEntiers is
array(positive
range <>) of integer;
nonTrouve:exception;
function
rechercheDicho
(x:integer;t:tabEntiers)
return positive is
i:positive:=t'first;
j:positive:=t'last;
milieu:positive;
begin
if
j<i
then
raise
nonTrouve;
else--
j>=i
milieu:=(i+j)/2;
if
t(milieu) = x
then
return
milieu;
elsif
t(milieu) > x
then
return
rechercheDicho(x,t(i..milieu-1));
else
return
rechercheDicho(x,t(milieu+1,j));
endif;
endif;
end rechercheDicho;
Question 1
ensembleVide
: -> Ensemble
-- crée un Ensemble
estVide
: Ensemble -> Boolean
-- teste si un Ensemble
est vide
cardinal
: Ensemble -> Natural
-- retourne le nombre
d'éléments
de l'Ensemble
unElement
: Ensemble -> Integer
-- retourne un
élément
quelconque de l'Ensemble sans l'enlever
-- de l'Ensemble
appartient
: Integer*Ensemble -> Boolean
-- teste si
l'élément
appartient à l'Ensemble
ajoute :
Integer*Ensemble -> Ensemble
-- ajoute un
élément
à l'Ensemble si celui-ci n'appartient pas déjà
à
-- l'Ensemble
enleve :
Integer*Ensemble -> Ensemble
-- enlève
l'élément
de l'Ensemble si celui-ci appartient à l'Ensemble;
-- ne fait rien sinon.
On choisit de représenter un Ensemble par un article contenant le tableau de ses éléments et sa taille.
Question 1