08.04.2014 Views

Algorithmique et Langage - Pages de Michel Deloizy - Free

Algorithmique et Langage - Pages de Michel Deloizy - Free

Algorithmique et Langage - Pages de Michel Deloizy - Free

SHOW MORE
SHOW LESS

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

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

Saved successfully!

Ooh no, something went wrong!