
On veut obtenir le nombre d'occurences de chaque lettre dans un mot donné et afficher ces nombres à
l'écran. On se limite aux lettres minuscules non accentuées. Par exemple, si le mot traité est
anticonstitutionnellement, le programme va afficher :
a : 1 fois
b : 0 fois
c : 1 fois
d : 0 fois
e : 3 fois
...
z : 0 fois
1- Écrire une fonction qui prend en entrée un mot, sous forme d'un tableau de caractères, et qui affiche
le nombre d'occurences de chaque lettre dans le mot (le type caractère est doté de l'opération + qui permet de
passer au caractère suivant. Par exemple 'a'+1 donne 'b', 'b'+1 donne 'c', etc.).
2- Indiquer le paramètre de complexité de la fonction. Indiquez s'il existe des cas au mieux ou au pire, et
calculez la complexité de la fonction dans le cas au pire s'il existe, dans le cas général sinon.
12- Comparaison de mots (60mn)
Le but de cet exercice est d'écrire des fonctions permettant de comparer des mots représentés par des
tableaux de caractères. Par exemple, le mot Bonjour sera représenté par le tableau char[] t ←
{'B','o','n','j','o','u','r'}. Ces fonctions peuvent entre autres être utilisées pour la recherche de
documents par mots-clés, dans un moteur de recherche par exemple.
1- Écrire une fonction qui prend en paramètres deux tableaux de caractères et renvoie vrai ou faux selon
que le premier est ou non le début du deuxième, c'est-à-dire si le contenu du deuxième est identique au contenu
du premier, mais avec des cases supplémentaires à la fin. Par exemple, l'appel de la fonction sur les tableaux
['c','h','a','t'] et ['c','h','a','t','o','n'] renvoie vrai, et son appel sur les tableaux ['c','h','a','t'] et ['c','h','a','p','i','t','r','e']
renvoie faux.
2- Écrire une fonction qui prend en paramètres deux tableaux de caractères et renvoie l'indice à partir
duquel on trouve les éléments du premier tableau, tels quel, dans le deuxième tableau. La fonction renvoie -1 si
le contenu du premier tableau n'apparaît pas dans le deuxième. Par exemple, l'appel de la fonction sur les
tableaux ['c','h','a','t'] et ['a','c','h','a','t','-','v','e','n','t','e'] renvoie 1, son appel sur les tableaux ['c','h','a','t'] et
['q','u','e','l','b','e','a','u','c','h','a','t'] renvoie 8, et son appel sur les tableaux ['c','h','a','t'] et ['c','h','o','c','o','l','a','t']
renvoie -1.
3- Écrire une fonction qui prend en paramètres deux tableaux de caractères et renvoie -1 si le deuxième
représente un mot plus petit, au sens lexicographique, que le premier, 0 si les 2 tableaux représentent le même
mot, et 1 si le premier représente un mot plus petit, au sens lexicographique, que le deuxième (l'ordre
lexicographique est l'ordre du dictionnaire). Par exemple, l'appel de cette fonction sur les tableaux ['c','h','a','t'] et
['c','h','i','e','n'] renvoie 1, et l'appel de cette fonction sur les tableaux ['c','h','i','e','n'] et ['c','h','a','t'] renvoie -1. On
suppose que les opérateurs <, ≤, > et ≥ existent sur les caractères.