Exercice Algorithme : Découpage Fonctionnel
![](/images/thumb/46/default.png)
On va créer une fonction IndiceEltSup qui cherche la bonne position, une action Insérer qui inclue le nombre entré dans la bonne case du tableau, et une action DécalageDroite qui décale comme dans l’exemple toutes les cases d’un rang vers la droite si nécessaire.
Const MAX=100
Type TtabVar = entité (tab : tableau[MAX] d’entiers, taille : entier)
Fonction IndiceEltSup (tvt : TtabVar, entier, n : entier) : entier
Var : i : entier
Début
Tant que (i?tvt.taille ET tvt.tab[i]<n)
i<=i+1
retourner (i)
Fin
Action DécalageDroite (ES : tvt : TtabVar, E : i : entier)
Var : j : entier
Début
Pour j de tvt.taille – 1 à i par pas de –1 faire
Tvt.tab[j+1]<=tvt.tab[j]
Tvt.taille++
Fin
Action Insérer (ES : tvt : TtabVar, E : i : entier, E : i : entier)
Début
DécalageDroite (tvt, i)
Tvt.tab[i]<=i
Fin
Action SaisieTrié (S : tvt : TtabVar)
Var : rep : chaîne, nb : entier, i : entier
Début
Tvt.taille<=0
Répéter
Ecrire (Rentrer encore un entier ?)
Lire (rep)
Si rep ? « non » alors
Lire (nb)
I<=IndiceEltSup(tvt, nb)
Si non(i
Insérer (tvt, i, nb)
Jusqu’à rep= « non » ou tvt.taille=MAX
Fin