Question posée à l'examen de juin 1998
Etant donné les déclarations suivantes:
const ListMax = ...; type Status = (Ok, PlusDePlace, DejaPresent); Tableau = record List: array[1..ListMax] of Integer;{Tableau trié} NbEltList: Integer; {Nombre d'éléments contenus dans List} end; procedure Trouver(Elt: integer; DansTableau: Tableau; var Indice: integer; var EltTrouve: boolean); {Procédure permettant de déterminer si l'élément se trouve dans le tableau trié en utilisant la recherche dichotomique.} procedure Inserer(Elt: integer; var DansTableau: Tableau; var EtatInsertion: Status); {Procédure permettant d'insérer un élément dans le tableau trié. La procédure retourne l'état de l'insertion.} procedure Supprimer(Elt: integer; var DansTableau: Tableau; var SupprimerOK: boolean); {Procédure permettant de supprimer un élément dans le tableau trié List. La suppression est possible si l'élément existe dans le tableau}
Ecrire le corps des procédures déclarées ci-dessus:
Trouver
en tenant compte que la recherche est dichotomique
et que la variable Indice
fournit la position de
l'élément trouvé dans le tableau, ou à la limite,
le dernier indice où pourra se faire une éventuelle insertion
ultérieure de l'élément.
Inserer
en considérant tous les cas possibles
de l'insertion. La variableEtatInsertion
retourne Ok si l'insertion s'est parfaitement
effectuée sinon PlusDePlace
ou DejaPresent
,
selon la cause respective de l'échec de l'insertion.
Supprimer
en considérant que l'on ne laisse
pas un trou dans le tableau quand on élimine un élément.
Site Hosting: Bronco