# « Examen » du TME « notation en masse »
Revision: 1.4

### Christian Queinnec

### 1er juillet 2002

## Conditions générales

Les conditions générales de cet examen sont semblables à celles des CFS. Des liens vers des documentations apparaissent à la fin du document précédemment pointé.
Tous les fichiers que vous serez amenés à écrire devront être dans un unique répertoire (déjà créé) dont le nom ressemble à:
~/Pages_web/tme2002Jul01/pseudos/p6lip123_VOTRELOGIN_001/
Quelques méta-informations ne faisant normalement pas partie du texte de l'examen apparaissent ici et là (et notamment ici).

### Question 1

On désire varier le sempiternel exercice portant sur le calcul du pgcd (plus grand commun diviseur) afin de calculer le ppcm (plus petit commun multiple) d'entiers naturels. Pour cela, on rappelle que
ppcm(p, q) * pgcd(p, q) = p * q
Écrire donc un programme, nommé `ppcm.exe`, qui prendra en arguments sur sa ligne de commande deux entiers naturels non nuls et qui émettra sur son flux de sortie le ppcm de ces deux entiers.
Voici quelques exemples:
% ./ppcm.exe 3 3
3
% ./ppcm.exe 9 6
18
Vous pouvez utiliser tout langage à votre convenance (à condition qu'il soit disponible sur les machines de l'UFR). Vous créerez un fichier écrit en `bash` et nommé `compil-ppcm.sh` dont le rôle est de fabriquer le programme exécutable nommé `ppcm.exe`. La compilation, si compilation il y a, doit être extrêmement précautionneuse et ne doit produire aucune erreur.

#### Livraison

Indicateur de livraison pour Delivery_Builder: `tme2002Jul01`

- Remise du fichier `compil-ppcm.sh`,
- Remise des autres fichiers nécessaires pour construire `ppcm.exe`.

Comme l'on n'utilisera Delivery_Builder, vous rendrez votre copie en exécutant, dans le répertoire où se trouvent vos solutions (normalement le répertoire `\~ /Pages_web/tme2002Jul01/pseudos/p6lip123_VOTRELOGIN_001/`), la commande suivante:
make -f /Enseignants/Infos/licence/CFS/ufr/2002Jul01/install.mkf rendre.copie
Vous pouvez si vous le souhaitez rendre d'autre copies en créant, à côté du répertoire `VOTRELOGIN_essai1/`, d'autre répertoires nommé sur le même schéma (par exemple `VOTRELOGIN_essai2/`).

#### Notation sur 10 point(s)

- 1 point(s) si l'exécution de `compil-ppcm.sh` produit un exécutable `ppcm.exe`,
- 9 point(s) si votre programme fonctionne correctement sur 4 de nos tests.
- Assertion: votre programme recevra exactement deux arguments correspondant à deux nombres entiers naturels non nuls.

### Question 2

Cette question est facultative. Elle conduit à imaginer des tests qui doivent éprouver des programmes d'interface différentes que dans le cas de la première question. Elle ne deviendra intéressante que lorque quelques uns d'entre vous l'auront abordée afin d'avoir des copies à corriger.
On souhaite généraliser le programme précédent de manière à pouvoir calculer le ppcm d'une séquence non vide d'entiers naturels non nuls.
Écrire donc un programme, nommé `mulppcm.exe`, qui prendra des entiers sur son flux d'entrée et produira au fur et à mesure les ppcm successifs des entiers lus. Le flux d'entrée sera formé de lignes terminées par une fin de ligne. Chaque ligne comportera un unique entier non signé sans aucun caractère superflu.
Voici quelques exemples (le symbole `^D` ci-dessous représente le caractère nommé Contrôle-D obtenu en pressant simultanément sur les touches `CTRL` et `d`: il simule une fin de flux):
% ./mulppcm.exe
3
3
2
6
3
6
12
12
^D
% (echo 3; echo 2; echo 3; echo 12) | ./mulppcm.exe
3
6
6
12
% for n in 3 2 3 12 ; do echo $n ; done | ./mulppcm
3
6
6
12
Vous pouvez utiliser tout langage à votre convenance (à condition qu'il soit disponible sur les machines de l'UFR). Vous créerez un fichier écrit en `bash` et nommé `compil-mulppcm.sh` dont le rôle est de fabriquer le programme exécutable nommé `mulppcm.exe`. La compilation, si compilation il y a, doit être extrêmement précautionneuse et ne doit produire aucune erreur.

#### Livraison

Indicateur de livraison pour Delivery_Builder: `tme2002Jul01`

- Remise du fichier `compil-mulppcm.sh`,
- Remise des autres fichiers nécessaires pour construire `mulppcm.exe`.

Comme l'on n'utilisera Delivery_Builder, vous rendrez votre copie en exécutant, dans le répertoire où se trouvent vos solutions (normalement le répertoire `~/Pages_web/tme2002Jul01/pseudos/VOTRELOGIN_essai1/`) la commande suivante:
make -f /Enseignants/Infos/licence/CFS/ufr/2002Jul01/install.mkf rendre.copie
Vous pouvez si vous le souhaitez rendre d'autre copies en créant, à côté du répertoire `p6lip123_VOTRELOGIN_001/`, d'autre répertoires nommé sur le même schéma (par exemple `p6lip124_VOTRELOGIN_001/`).

#### Notation sur 10 point(s)

- 2 point(s) si l'exécution de `compil-mulppcm.sh` produit un exécutable `mulppcm.exe`,
- 8 point(s) si votre programme fonctionne correctement sur nos tests.
- Assertion: votre programme recevra un flux d'entrée correct comportant au moins un entier naturel.

> Ce document a été traduit de LATEX par HEVEA.