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