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.

  1. 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.
  2. 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 : enfin, elle comparera les deux tableaux de comptage.
  3. La procédure init0 initialise à 0 le tableau de comptage passé en paramètre.
  4. 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.
  1. 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.
  2. 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 ?
  3. 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).
  4. 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 : 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.NOMlogin 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.