Accueil

Chaînes de caractères

Objectifs du TD : apprendre à parcourir des chaînes de caractères. Utiliser l'itérateur for

Vous avez déjà manipulé des chaînes caractères comme "bonjour". Dans ce TD, vous apprendrez à parcourir pas à pas une chaîne de caractères.


PROBLEMES

A ce stade, pour résoudre un problème vous devez vous poser les questions suivantes:
  1. Cryptographie V1 Ecrire une fonction qui prend un mot et le code ou le décode selon l'algorithme dit de César. Le principe est le suivant. Pour coder (ou décoder), il faut un nombre positif c (3 historiquement) qui sert à remplacer la lettre à la position i dans l'alphabet par la lettre à la position i+c. Par exemple, si c=3 la lettre a est remplacée par d et la lettre f est remplacée par i. Si i+c>26 alors on utilise le modulo. Par exemple, si c=3 la lettre x est remplacée par a. Le mot à coder ou décoder peut contenir autre chose que des lettres de l'alphabet (comme l'espace, la virgule, ...), dans ce cas le caractère reste inchangé. Aide: il faut partir d'un résultat égal à "" et lui ajouter les lettres codées. Vous pouvez stocker les lettres de l'alphabet dans une variable alphabet qui contient "abcdef...yz".

  2. La suite oral-active consiste à lire à voix haute des termes et à compter les chiffres qui constituent le terme. La suite démarre avec le terme 1. Il y a "un 1" donc le terme suivant est 11. Il y a "deux 1" donc le terme suivant est 21. Puisqu'il y a "un 2 et un 1" le terme suivant est 1211.
    Pour cet exercice, on suppose que les termes de la suite sont stockés dans des chaînes de caractères. Ecrire la fonction oralActive(terme) qui prend un terme de la suite et renvoie le suivant. Par exemple, oralActive("1211") doit renvoyer "111221". Utiliser cette fonction dans un programme qui demande à l'utilisateur le nombre de termes de la suite oral-active qu'il veut calculer et qui les affiche. Exemple d'exécution :
    combien de termes (>=2) ? 7
    terme 1: 1
    terme 2: 11
    terme 3 : 21
    terme 4 : 1211
    terme 5 : 111221
    terme 6 : 312211
    terme 7 : 13112221
    
  3. Cryptographie V2 On vous demande maintenant d'écrire une fonction de cryptographie basée sur l'utilisation d'un alphabet désordonné. Le principe est le suivant : une chaîne de caractères sert de clé et permet de créer une table de codage. Cette table contient au début les lettres de la clé (une seule fois) puis contient, par ordre alphabétique, les lettres de l'alphabet qui ne sont pas contenues dans la clé. Par exemple, si la clé est "j'aime les cerises" la table est "jaimelscrbdfghknopqtuvwxyz". Si la clé est "j'aime les cerises qui piquent le nez" la table est "jaimelscrqupntzbdfghkovwxy". Une fois cette table construite, le codage consiste à remplacer le caractère de position i dans l'alphabet par le caractère de position i dans la table. Donc avec la clé "j'aime les cerises", le a est remplacé par j, le b est remplacé par j.

  4. Reconnaissance de motifs Ecrire une fonction qui lit un texte t et une chaîne de caractères c et qui affiche le nombre de fois où c apparait dans t. Exemple de résultat d'exécution :
    Le texte : le blabli blabla blablabla blibla
    La chaîne à chercher : blabla
    La chaîne blabla apparait 3 fois
    
    Aide Vous devez gérer deux indices i et j qui vont parcourir respectivement les caractères du texte et les caractères de la chaîne à chercher. Vous devrez utiliser deux boucles while imbriquées, une pour parcourir le texte, et une pour parcourir la chaîne.