Fonctions sur les chaînes de caractères

Transcription

Fonctions sur les chaînes de caractères
TD Techniques informatiques
Feuille n=°5
Fonctions sur les chaînes de caractères
On considère que l’on dispose des fonctions suivantes qui existent d’ailleurs dans le langage
CAML :
Fonction CAML
string_length
Fonction
Longueur
Type
: string -> int
nth_char
N-ème
caractère
SousChaîne
: string -> int ->char
sub_string
: string ->int ->int
->string
Description
string_length ch = nombre
de caractères de ch
nth_char ch n = le n-ème
caractère de la chaîne ch
sub_string ch d l = la souschaîne de ch de longueur l, à
partir du d-ème caractère
Attention : a) le premier caractère d’une chaîne est le caractère à la position 0.
b) pour tous les exercices, donner une solution récursive et une autre itérative.
Exercice n=°1 :
Écrire une fonction qui calcule l’inverse d’une chaîne.
Exemple : inverse ("cours") = "sruoc"
Exercice n=°2 :
Écrire une fonction qui teste si son argument (de type chaîne) est un palindrome (un mot qui
se lit aussi bien à l’endroit qu’à l’envers).
Exemple : palindrome ("laval") = true
Exercice n=°3 :
Écrire une fonction qui compte le nombre d’occurrences d’un caractère c dans une chaîne ch.
Exemple : nb_occ (`o`, "coucou")= 2
Exercice n=°4 :
Écrire une fonction qui compte le nombre de voyelles dans une chaîne ch.
Exemple : nb_voy ("coucou")= 4
Exercice n=°5 :
Écrire une fonction qui teste si une chaîne ch1 appartient à une autre chaîne ch2.
Exemple : appartient ("ara", "caractère")= true
Bi-Deug LFTI – 2004/2005
D.Battistelli – D.Sofronie – J.Couto
TD Techniques informatiques
Exercice n=°6 :
Écrire une fonction qui indique la position de la première occurrence d’une chaîne ch1 dans
une autre chaîne ch2.
Exemple : position ("ma", "maman")=0
Exercice n=°7 :
Écrire une fonction qui indique le nombre d’occurrences d’une sous-chaîne ch1 dans une
chaîne ch2.
Exemple : nb_occ_ch("to", "toto")=2
Exercice n=°8
Écrire une fonction qui remplace la chaîne ch1 par la chaîne ch2, dans la chaîne ch3.
Exemple :
remplace ("os", "art", "position")= "partition"
remplace ("os", "ros", "osos")= "rosros"
remplace ("os", "oso", "oss")= "osos"
Bi-Deug LFTI – 2004/2005
D.Battistelli – D.Sofronie – J.Couto