TD 1 - Les chaînes de caractères std::string 1 Changement de casse
Transcription
TD 1 - Les chaînes de caractères std::string 1 Changement de casse
TD 1 - Les chaînes de caractères std::string P12#, Algorithmes et utilisation de structures de données 4 mai 2007 1 Changement de casse En typographie, la casse désigne le fait de distinguer les lettres majuscules des lettres minuscules. Changer la casse d’un caractère revient donc à le mettre en minuscule s’il était en majuscule, et vice versa. Écrivez les trois fonctions suivantes : 1. basDeCasse(texte):chaîne, qui retourne la chaîne texte convertie en minuscule ; 2. hautDeCasse(texte):chaîne, qui retourne la chaîne texte convertie en majuscule ; 3. nomsPropres(texte):chaîne, qui convertit la première lettre de chaque mot de la chaîne texte en majuscule, et tout le reste en minuscule. 2 Inversion Écrivez une fonction miroir(texte):chaîne qui retourne une chaîne correspondant à l’inversion des caractères de la chaîne texte. Exemple : cette fonction appliquée sur la chaîne "bonjour" doit produire comme résultat "ruojnob". 3 Palindrome On définit un palindrome comme un texte dont l’ordre des lettres est identique qu’on le lise à l’endroit ou à l’envers. Les mots "kayak" et "radar" sont des palindromes. 1. Écrivez une fonction palindrome(texte):bool qui retourne vrai si la chaîne texte est un palindrome et faux dans le cas contraire. 2. Même question en utilisant la fonction miroir définie précédemment. 4 Suppression de texte 1. Écrivez une fonction suppCar(texte,pos):chaîne qui retourne la chaîne obtenue après avoir supprimé de la chaîne texte le caractère situé à la position pos, où pos est un entier ≥ 0. 2. Proposez une fonction suppMots(texte,mot):chaîne qui retourne la chaîne obtenue après avoir supprimé de la chaîne texte toutes les occurrences de la sous-chaîne mot. Exemple : après avoir supprimé les occurrences de "vélo" de la chaîne "mon vélo est le plus beau vélo de tous les vélos", on obtient "mon est le plus beau de tous les s". 5 Anagrammes Une anagramme est le résultat d’une succession de permutations des lettres d’un mot de manière à produire un autre mot qui ai du sens. Par exemple, "imaginer" est une anagramme de "migraine". 1. Proposez un algorithme permettant de détecter si deux mots sont des anagrammes. 2. Implantez cet algorithme dans la fonction anagramme(mot1,mot2):bool qui retourne vrai si mot2 est une anagramme de mot1 et faux dans le cas contraire. 1 6 Cryptage Toute technique de cryptage utilise une clé sans laquelle il est difficile de déchiffrer le texte codé. Un moyen simple de crypter un texte consiste à appliquer un opérateur caractère à caractère entre le texte initial et la clé. Si la clé est trop courte, on l’utilise cycliquement autant que nécessaire. Par exemple, si notre texte est "ultra confidentiel", la clé est "efficace" et l’opérateur choisi est l’addition, le cryptage se fera ainsi : u l t r a c o n f i d e n t i e l + + + + + + + + + + + + + + + + + + e f f i c a c e e f f i c a c e e f = ... 1. Écrivez une fonction cryptage(texte,cle):chaîne qui encode la chaîne texte à l’aide de la chaîne cle et de l’opérateur d’addition, puis retourne le résultat. 2. Proposez une fonction decryptage(texte,cle):chaîne capable de décoder le texte ainsi crypté. 7 Permutation circulaire 1. Écrivez l’algorithme de la fonction booléenne permutCirc(s1,s2):bool qui retourne vrai si la chaîne s2 correspond à une permutation circulaire des caractères de la chaîne s1, et faux sinon. 2. Proposez une fonction permutGauche(mot,n):chaîne qui effectue une permutation circulaire des caractères de la chaîne mot de n positions vers la gauche, puis retourne le résultat. 3. Même question pour la fonction permutDroite(mot,n):chaîne qui effectue une permutation circulaire à droite. 2