IUT R&T - 1ère année - Informatique
Programmation et algorithmique 2


TP n°1

Avant la date limite indiquée en TP, envoyer sur l'ENT le programme solution du TP avec les tests associés, dans un unique fichier complétant le fichier initial tp1cr.c
Indications :
Les fonctionnalités seront réalisées progressivement en testant à mesure leur bon fonctionnement.
Chaque fonctionnalité sera si possible précédée de l'algorithme correspondant noté en commentaire.
Pour chaque fonction programmée, il n'est pas inutile de faire des essais intermédiaires pour vérifier son bon fonctionnement de la fonction (ces tests intermédiaires pouvant être remplacés ensuite par le test général du programme principal).
Le programme sera testé sur des exemples bien choisis qui figureront en commentaire en fin de compte-rendu.
Le travail rendu devra être de bonne qualité, même s'il n'est pas complet.


EXERCICE

On souhaite gérer une course de N bateaux en cinq manches. Dans un premier tableau nommé Participants, on placera les noms (au plus vingt caractères prévu) des bateaux participants. Dans un deuxième tableau nommé Manches, on placera les cinq notes (sur 20, une par manche) de chaque bateau. Dans un troisième tableau nommé Scores, on placera les scores finaux (sur 100) des bateaux. Il y aura un maximum de Nmax participants (avec donc N≤Nmax).

Exemple avec quatre participants :
Participants
Black_pearl
La_Licorne
Flying_Dragon
Yar_Fast
 
Manches
1218151918
151312 67
1317131514
1711172019
 
Scores
82
53
72
84


1. Créer un programme C qui définit, comme variables globales, ces trois tableaux. Leur taille maximale commune sera définie à 20 par une macro-instruction #define.

2. Créer une fonction int Inscrire() qui enregistre le nom d'un bateau pour la course, le nom du bateau étant donné par l'utilisateur, et met à jour le nombre d'inscrit. La fonction retourne un code de bon fonctionnement avec 0 s'il n'y a pas eu de problème).

3. Créer une fonction int Noter() qui enregistre les notes des différents bateaux pour une manche donnée. L'utilisateur affecte un score entre 0 et 20 à chaque bateau inscrit à la course. La fonction retourne un code de bon fonctionnement.

4. Créer une procédure void CalculeScore() qui calcule les scores globaux de tous les bateaux inscrits.

5. Créer une fonction int DetermineGagnant() qui donne le numéro d'inscription du gagnant de la course. Si deux bateaux ont le même score global, c'est la note de la cinquième manche qui les départagera.

6. Créer une procédure void Inscriptions() qui inscrit pour la course un nombre de bateaux précisé par l'utilisateur.

7. Compléter la fonction main() pour gérer une course complète, , du début à la fin et en affichant les informations utiles à l'utilisateur selon les besoins.

8. Effectuer un test complet qui figurera en fin de compte-rendu comme commentaire. (Les essais intermédiaires obsolètes seront effacés.)