12.07.2015 Views

Exercices (Chaînes de caractères) - Fabrice Rossi

Exercices (Chaînes de caractères) - Fabrice Rossi

Exercices (Chaînes de caractères) - Fabrice Rossi

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

1. Ecrire une métho<strong>de</strong> int charToInt(char t) qui transforme un chiffre représenté par unchar en sa valeur sous forme <strong>de</strong> int. Le résultat <strong>de</strong> charToInt(’2’) sera par exemple 2.Si le paramètre t n’est pas un chiffre, la métho<strong>de</strong> <strong>de</strong>vra renvoyer la valeur -1.2. Ecrire une métho<strong>de</strong> int toPositiveInt(String s) qui transforme une chaîne <strong>de</strong> caractèrescontenant exclusivement <strong>de</strong>s chiffres en l’entier correspondant. Pour cela, on utiliserala métho<strong>de</strong> charToInt définie dans la question précé<strong>de</strong>nte. De plus, on rappelle que siun entier s’écrit A n−1 A n−2 . . . A 1 A 0 , où les A i désignent les chiffres <strong>de</strong> l’entier, alors lavaleur numérique <strong>de</strong> l’entier est donnée par ∑ n−1k=0 A k10 k . Il faudra être très attentif aufait que les caractères d’une String sont numérotés <strong>de</strong> gauche à droite, soit le contraire<strong>de</strong> la numérotation utilisée pour les chiffres d’un nombre. Enfin, si la chaîne <strong>de</strong> caractèresne représente pas un nombre entier positif, la métho<strong>de</strong> <strong>de</strong>vra renvoyer -1.3. On souhaite maintenant traduire une chaîne <strong>de</strong> caractères en un nombre réel. Nous allonsprocé<strong>de</strong>r par étapes :(a) écrire une métho<strong>de</strong> int position(String s,char c) qui donne la position <strong>de</strong> lapremière apparition du caractère c dans la chaîne s, et renvoie -1 si le caractèren’apparaît pas dans la chaîne.(b) écrire une métho<strong>de</strong> String substring(String s,int début,int fin) qui fabriquela chaîne <strong>de</strong> caractères constituée <strong>de</strong>s caractères <strong>de</strong> s d’indices début, début+1, etc.jusqu’à fin-1. Le résultat <strong>de</strong> substring("ABCDEFGH",3,6) est donc la chaîne "DEF".Si les paramètres numériques ne sont pas adaptés à la chaîne <strong>de</strong> départ (trop grand,trop petit, etc.), la métho<strong>de</strong> <strong>de</strong>vra renvoyer une chaîne vi<strong>de</strong>.(c) écrire une métho<strong>de</strong> double toPositiveReal(String s) qui convertit son paramètreen un réel en procédant <strong>de</strong> la façon suivante :i. la métho<strong>de</strong> repère la position dans s du point décimal, le caractère ’.’ii. la métho<strong>de</strong> découpe s en <strong>de</strong>ux chaînes : la partie fractionnaire (après le ’.’) etla partie entière (avant le ’.’)iii. la métho<strong>de</strong> transforme les <strong>de</strong>ux parties en intiv. la métho<strong>de</strong> combine les <strong>de</strong>ux entiers obtenus afin <strong>de</strong> fabriquer le réel attenduOn doit bien sûr utiliser les métho<strong>de</strong>s définies dans les questions précé<strong>de</strong>ntes.(d) écrire une métho<strong>de</strong> double toPositiveReal2(String s) qui réalise la même opérationque la métho<strong>de</strong> précé<strong>de</strong>nte mais en se basant sur le fait suivant : si un réels’écritA n−1 A n−2 . . . A 1 A 0 .A −1 A −2 . . . A −poù les A i désignent les chiffres du réel, alors la valeur numérique <strong>de</strong> ce réel est donnéepar ∑ n−1k=−p A k10 k . Il faut donc déterminer p et n, puis travailler <strong>de</strong> façon assezsimilaire à celle utilisée pour la métho<strong>de</strong> toPositiveInt, en faisant <strong>de</strong> nouveau attentionau sens <strong>de</strong> la numérotation <strong>de</strong>s caractères dans les Strings. Il est bien entenduinterdit d’utiliser la métho<strong>de</strong> toPositiveReal pour construire la nouvelle métho<strong>de</strong>.F. <strong>Rossi</strong>– 8 janvier 2002 (Version 2.1) p. 13

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!