Vous êtes sur la page 1sur 4

Premier cycle - I1 Lundi 2 Décembre 2002

Algorithmique
Correction

1 Question de compréhension
1. Que fait le fonction suivante :
fonction bidule (t : tableau[1..MAX] d’Entier ; nbElements : Entier) : Booléen
Déclaration drapeau : Booléen, i : Entier
début
drapeau Vrai
i 1
tant que drapeau et i nbElements faire


si t[i] t[i+1] alors




drapeau Faux
sinon
i i+1
finsi
fintantque
retourner drapeau
fin
La fonction bidule permet de savoir si les nbElements entiers stockés dans t sont rangés en ordre
croissant
2. Justifier votre réponse.
En effet dans l’algorithme on considère tout d’abord que ce fait (representé par la variable locale
drapeau) est vrai. Ensuite on parcourt (par l’intermédiaire de la variable i) le tableau t tant
que i nbElements et que deux éléments consécutifs soient bien rangé (t[i] t[i+1]). Si
 

cette deuxième condition n’est pas réalisée, la variable drapeau passe alors à faux. Finalement
on retourne la variable drapeau.

2 Questions sur les tris (7 pts) :


1. Ecrire la procédure de tri par minimum successif qui permet de trier un tableau d’entiers (de 1
à MAX) contenant nbElements significatifs
fonction indiceDuMinimum (t : tableau[1..MAX] d’Entier ; rang, nbElements : Entier) : Entier
Déclaration i, indiceCherche : Entier
début
indiceCherche rang
pour i rang+1 à nbElements faire
si t[i] t[indiceCherche] alors


indiceCherche i
finsi
finpour
retourner indiceCherche
fin
1
procédure effectuerTriParMimimumSuccessif ( E/S t : tableau[1..MAX] d’Entier ; E nbEle-
ments : Entier )
Déclaration i,indice : Entier
début
pour i 1 à nbElements-1 faire
indice indiceDuMinimum(t,i,nbElements)
si i indice alors


echanger(t[i],t[indice])
finsi
finpour
fin
2. Expliciter son fonctionnement sur l’exemple suivant :

3 5 4 1

On peut représenter le comportement de effectuerTriParMimimumSuccessif à l’aide du


tableau suivant :
i indiceDuMinimum t
3541
1 4 1543
2 4 1345
3 3 1345

3 Question sur les structures (8 pts) :


Soit la constante MAX et les types Lettre et Mot définis de la façon suivante :
Constante MAX = 100
Type Lettre = ’a’..’z’
 

Type Mot = structure


nbLettres : Entier
leMot : tableau[1..MAX] de Lettre
finstructure
1. Ecrire l’algortihme concatener qui permet de concatener deux mots :

Nom : concatener
Rôle : concatene deux variables de type Mot
Entrée : a,b : Mot
Sortie : c : Mot
Déclaration : i,j : Entier
début

2
c.nbLettres a.nbLettres+b.nbLettres
si c.nbLettres MAX alors


c.nbLettres MAX
finsi
i 1
pour j 1 à a.nbLettres faire
c.leMot[i] a.leMot[j]
i i+1
finpour
j 1
tant que j b.nbLettres et i MAX faire
 

c.leMot[i] b.leMot[j]
i i+1
j j+1
fintantque

fin
2. Ecrire l’algorithme comparer qui permet de comparer deux mots :

Nom : comparer
Rôle : compare deux variables de type Mot et retourne -1,0 ou 1
Entrée : a,b : Mot
Sortie : resultat : Entier
Déclaration : i : Entier
début
resultat 0
i 1
tant que resultat=0 et i a.nbLettres et i b.nbLettres faire
 

si a.leMot[i] b.leMot[i] alors




resultat -1
sinon
si a.leMot[i] b.leMot[i] alors


resultat 1
sinon
i i+1
finsi
finsi
fintantque
si resultat=0 et a.nbLettres b.nbLettres alors


si a.nbLettres b.nbLettres alors




resultat 1
sinon
resultat -1
finsi
finsi
fin
3. Ecrire l’algorithme estUnPalindrome qui permet de savoir si un mot est un palindrome :

Nom : estUnPalindrome
Rôle : détermine si un mot est un palindrome
Entrée : a : Mot

3
Sortie : resultat : Booléen
Déclaration : i,j : Entier
début
resultat Vrai
i 1
j a.nbLettres
tant que resultat et i j faire


si a.leMot[i]=a.leMot[j] alors
i i+1
j j-1
sinon
resultat Faux
finsi
fintantque
fin