T1.programmation : Sujet du TP2
T1.programmation : Sujet du TP2
Groupe ESIEE, Denis BUREAU, janvier 2002.
Attention !
Le sujet peut être modifié jusqu'à la veille du TP.
1 Les objectifs
Être capable de réaliser sur machine des programmes mettant en
oeuvre les notions vues au TD2.
(créer un répertoire TPINFO\PRO\CONTROLE puis
un sous-répertoire TP2 pour y mettre les 2 .CPP à la fin
de ce TP, mais travailler sur C:)
2 ANAGRAM.CPP
Le but est de réaliser un programme permettant de détecter si deux mots
(ou deux phrases) entré(e)s par l'utilisateur sont des anagrammes ou non.
Rappel : Deux mots sont des anagrammes si et seulement s'ils s'écrivent avec
exactement les mêmes lettres, chacune en même quantité.
Exemple : Sainte et Tisane.
Remarque : Les minuscules sont considérées identiques aux majuscules, et
les caractères non alphabétiques sont ignorés.
- Le programme principal gèrera les interactions avec l'utilisateur, et
appellera la fonction anagramme en lui passant les deux
chaînes entrées TANT QUE la première chaîne entrée ne
commence pas par un point.
- La fonction booléenne anagramme effectuera son travail à
l'aide de 2 tableaux de comptage (un pour chaque mot) ;
le rôle d'un tableau de comptage est de stocker pour chaque lettre
de l'alphabet le nombre de fois qu'elle apparaît dans le mot ;
anagramme appellera donc, pour chaque tableau de comptage :
- la procédure init0 pour initialiser ce tableau,
- la procédure compte pour compter dans ce tableau
les occurences
1
de chaque lettre de l'alphabet dans la chaîne ;
enfin, elle comparera les deux tableaux de comptage.
- La procédure init0 initialise à 0 le tableau de comptage
passé en paramètre.
- La procédure compte prend une chaîne en paramètre
d'entrée et
remplit le tableau de comptage passé en paramètre mixte.
Rappels :
Commencer par écrire les prototypes des sous-programmes en spécifiant
correctement les paramètres données, mixtes, ou résultats.
Autres exemples :
tartines et satiner ne sont pas des anagrammes.
"Mer : Danger !" et "grand-mere" sont des anagrammes.
3 ERATOS.CPP
Le crible d'Ératosthène est une méthode pour découvrir les nombres
premiers. Il consiste à mettre tous les entiers (inférieurs à une
certaine LIMITE, par exemple 1000)
dans une grille, puis à rayer méthodiquement tous les multiples des
nombres non encore rayés. Exemple :
debut: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
raye2: 2 3 / 5 / 7 / 9 / 11 / 13 / 15 / 17 / 19 / 21 / 23 / 25
raye3: 2 3 5 7 / 11 13 / 17 19 / 23 25
raye5: 2 3 5 7 11 13 17 19 23 /
raye7: ...
On constate alors qu'il ne reste plus que des nombres premiers dans la grille.
- La procédure initV initialise à VRAI les LIMITE
éléments du tableau passé en paramètre, pour signifier
qu'a priori, tous les nombres entiers sont candidats à être
premiers.
- La procédure raye applique la méthode décrite ci-dessus
en mettant FAUX dans le tableau passé en paramètre pour chaque
case correspondant à un nombre qu'elle doit "rayer".
Remarque : il est inutile de parcourir TOUS les nombres jusqu'à la
LIMITE.
Question : quand peut-on arrêter la boucle principale ?
- La procédure affiche affiche l'intégralité des nombres
premiers figurant dans le tableau passé en paramètre, à raison
de 10 par ligne.
Rappel : il est possible d'utiliser avant chaque cout
l'instruction cout.width( 7 ); pour que l'affichage de chaque
nombre occupe exactement 7 caractères (complété par des espaces).
- Le programme principal déclarera un tableau de LIMITE
booléens, appellera la procédure initV et la procédure
raye, puis demandera à l'utilisateur son choix parmi :
- 0 pour sortir,
- 1 pour appeler la procédure affiche,
- nombre entre 2 et LIMITE-1
pour tester si ce nombre est premier ou non,
tout ceci tant que l'utilisateur n'a pas tapé 0 pour sortir.
On supposera que l'utilisateur n'entre que des nombres entiers.
Exemple d'affichage :
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97 101 103 107 109 113
127 131 137 139 149 151 157 163 167 173
179 181 191 193 197 199 211 223 227 229
...
4 Contrôle
Il est fortement conseillé de finaliser les 2 exercices, en travail
personnel si nécessaire.
Un contrôle des exercices effectués pendant le TP sera effectué
par une procédure automatique lancée peu de temps après le TP.
Pour que cette procédure trouve vos fichiers, ils doivent obligatoirement
se trouver dans le répertoire CONTROLE\TP2 à créer dans votre
répertoire TPINFO\PRO qui se trouve à la racine de votre
compte, et être nommés comme cela est indiqué pour chaque exercice.
Vous devez donc les recopier à partir de C:\TEMP.
Les exercices sont effectués en binôme, et les fichiers ne résident
que sur un seul compte. Pour que le second membre du binôme soit
pris en compte par la procédure automatique, il faut créer dans le
même répertoire un fichier login.NOM où login est le
login du second membre du binôme et NOM l'extension obligatoire.
Le contenu du fichier login.NOM est indifférent.
La moindre faute d'orthographe dans ces noms de fichiers ou bien dans
les répertoires et sous-répertoires concernés empêche la procédure
automatique de trouver le fichier ; l'exercice correspondant sera alors
considéré comme non fait.
Pour vérifier que toutes les obligations ci-dessus sont respectées,
vous devez exécuter sous DOS la commande
E:\TS1\PROF\BUREAUD\PRO\TP2\TESTFICH login
où login est le login du compte sur lequel sont les fichiers.
Notes:
1 apparitions
File translated from
TEX
by
TTH,
version 2.75.
On 18 Jan 2002, 18:30.