Algorithmique et Langage - Pages de Michel Deloizy - Free
Algorithmique et Langage - Pages de Michel Deloizy - Free
Algorithmique et Langage - Pages de Michel Deloizy - Free
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
TP2 : MANIPULATIONS DE CHAÎNES DE CARACTÈRES<br />
I. Saisie <strong>de</strong> chaînes<br />
Définir un tableau <strong>de</strong> 256 caractères.<br />
Faire la saisie d'une chaîne <strong>de</strong> caractères (limitée à 20 caractères) en utilisant :<br />
la fonction scanf<br />
la fonction g<strong>et</strong>s<br />
la fonction fg<strong>et</strong>s<br />
Dans chaque cas,<br />
Afficher normalement la chaîne saisie (en utilisant printf)<br />
Afficher en hexadécimal le co<strong>de</strong> ASCII <strong>de</strong>s 80 premiers oct<strong>et</strong>s du tableau. (On pourra concevoir une fonction qui<br />
affiche en hexadécimal le contenu d'un tableau <strong>de</strong> caractères)<br />
Y a-t-il <strong>de</strong>s caractères indésirables dans la chaîne saisie ?<br />
Que se passe-t-il si l'utilisateur entre plus <strong>de</strong> 20 caractères ? Comment remédier à ce problème ?<br />
Écrire une fonction qui "n<strong>et</strong>toie" une chaîne saisie par fg<strong>et</strong>s (en enlevant le caractère '\n' résiduel).<br />
II. Traitements sur les chaînes<br />
II.1. Écrire une fonction qui compte le nombre <strong>de</strong> caractères contenus dans une chaîne. Comparer les résultats<br />
obtenus avec la fonction strlen.<br />
II.1.a. 2 Comparer les temps d'exécution <strong>de</strong> votre fonction par rapport à strlen. On pourra utiliser pour cela la<br />
fonction difftime (définie dans time.h) appliquée sur un très grand nombre d'appels <strong>de</strong> chacune <strong>de</strong>s fonctions.<br />
Essayer d'optimiser votre fonction afin qu'elle s'exécute en un temps minimal.<br />
II.2. Écrire une fonction qui compte le nombre <strong>de</strong> voyelles contenues dans une chaîne <strong>de</strong> caractères (sans<br />
distinction <strong>de</strong>s minuscules <strong>et</strong> majuscules).<br />
II.3. Écrire une fonction qui compte le nombre <strong>de</strong> mots contenus dans une chaîne.<br />
III. Interprétation d'une chaîne <strong>de</strong> caractères.<br />
III.1. Faire la saisie d'une chaîne donnée sous la forme : valeur numérique opérateur valeur numérique<br />
Par exemple : "2.4 + -3.5"<br />
L'opérateur pourra être un caractère parmi +, -, *, / <strong>et</strong> ^ (élévation à la puissance)<br />
Faire une fonction qui r<strong>et</strong>ourne la valeur numérique correspondant à l'expression écrite dans la chaîne. On pourra<br />
utiliser la fonction strtod pour l'évaluation <strong>de</strong>s données numériques.<br />
III.2. 2 Améliorer c<strong>et</strong>te fonction pour qu'elle prenne en charge les parenthèses, perm<strong>et</strong>tant ainsi d'écrire par<br />
exemple : 2.4 + (-3.5)<br />
Pourrait-on envisager d'évaluer une expression du type : 2.4 + (0.5-4.0)<br />
2 Exercices optionnels