Enoncé de l'Exercice:
Ecrire l’en-tête d’une action multi
décalage à droite qui décale à droite les éléments d’une chaîne à partir
d’un certain indice et insère des cases vides à la place. (des actions
de multi décalage ont déjà été vue avec les tableaux, on ne demande pas
d’en refaire une ici, ce référer aux exercices sur les tableaux)
Faire une action d’insertion. On pourra pour cela utiliser au paravent la fonction multi décalage à droite précédente.
Faire une action de remplacement d’une
partie d’une chaîne de caractères par une autre chaîne de caractères
dont la longueur n’est pas forcément la même. On pourra utiliser des
fonctions des exercices 39 et 40.
Faire une fonction Extraire qui prend
une partie de chaîne de caractères à partir d’un certain indice et la
met dans une chaîne destination.
Faire une fonction de recherche qui
recherche une chaîne dans une chaîne de caractère et retourne un indice
si à partir de cette case on a la chaîne cherchée. Sinon, elle retourne
–1.
Faire une action qui changent toutes les occurrences d’une chaîne dans une chaîne de caractères par une autre chaîne tampon.
Action MultidécalageDroite (ES : src : Tchaine, E : indice : entier, E : lg : entier)
Action Insérer (ES : src : Tchaine, E : indice : entier, E : motif : Tchaine)
Var i, Lsrc, Lmotif : entier
Début
LmotifÍLongueur(motif)
MultidécalageDroite (src, indice, Lmotif)
Pour i de 0 à Lmotif-1 faire
src[indice+i]Ímotif[ i ]
Fin
Action Remplacer (ES : src : Tchaine, E indice : entier, E lg : entier, E : motif : Tchaine)
Début
Effacer (src, indice, lg)
Insérer (src, indice, motif)
Fin
Fonction Recherche (src : Tchaine, motif : Tchaine, Binf : entier)
Var : i, Lsrc, Lmotif : entiers
Tampon : Tchaine
Début
LsrcÍLongueur (src)
LmotifÍLongueur(motif)
iÍBinf
Extraire (src, i, Lmotif, tampon)
Tant que (i
iÍi+1
Extraire (src, i, Lmotif, tampon)
Si non(i=Lsrc – Lmotif) alors retourner (i)
Sinon retourner (–1)
Fin
Action RemplacarToutesChaines (ES : src : Tchaine, E : ancien : Tchaine, E : nouveau :
Tchaine)
Var i , Lancien, Lnouveau, indice :entiers
Début
iÍ0
LancienÍLongueur (ancien)
LnouveauÍLongueur (nouveau)
IndiceÍ Recherche(src, ancien, i)
Tant que indice? -1 faire
Remplacer (src, indice, Lancien, nouveau)
iÍindice+Lnouveau
indiceÍRecherche(src, ancien, i)
Fin