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


TD n°3 - Types structurés, fichiers

Chaque fonction en C de ce TD sera précédée d'un commentaire constitué de la description algorithmique (à un plus ou moins haut niveau) de la fonction.

EXERCICE 1 (version du 18/02/2020)

1.1. Définir en C un type structuré Etudiant composé d'un Nom, d'un Prénom, d'une date de Naissance, d'un numéro de Groupe, d'un relevé de six Notes (sur 20), et d'une moyenne.
N.B. Combien de caractères prévoir pour le Nom, le Prénom ?

1.2. Définir une procédure Inscrire(Etudiant *E) qui demande à l'utilisateur un nom, un prénom et une date de naissance, et modifie en conséquence l'Etudiant (*E).
Les autres champs de la structure Etudiant seront mis à 0.
N.B. Pour utiliser cette fonction avec un Etudiant X (défini comme variable globale), l'appel sera de la forme Inscrire(&X) (passer l'adresse de X pour qu'il soi modifié par "effet de bord").

1.3. Définir une procédure Noter(Etudiant *E) qui saisit les six notes qu'un Etudiant (*E) a obtenues.

1.4. Définir une procédure Moyenner(Etudiant *E) qui attribue une moyenne à un Etudiant (*E) en fin d'année (avec les six notes qu'il a obtenues).

1.5. Définir une variable Promotion constitué d'au plus 64 Etudiants, et une variable Effectif destinée à contenir le nombre d'étudiants dans une promotion (Effectif≤64).

1.6. Définir une fonction Score qui prend en paramètres une Promotion de n≤64 Etudiants en fin d'année et un numéro de groupe et qui retourne la moyenne générale de tous les étudiants de ce groupe (moyenne des moyennes). Si le numéro de groupe est 0, le calcul se fera sur toute la promotion.

1.7.1. A faire hors TD : Ecrire une fonction PrepareJury qui prend en paramètres une Promotion de n≤64 Etudiants en fin d'année et qui enregistre dans un fichier promotion.txt la liste des étudiants (Nom, Prénom, Moyenne, séparés par un espace). Il y aura dans le fichier une ligne par étudiant.

1.7.2. A faire hors TD : Tester ces fonction en créant une Promotion contenant 3 étudiants placés dans 3 groupes différents 1, 2 et 3.

EXERCICE 2 (version du 18/02/2020)

2.1. Ecrire en C une fonction sauveDate(Date d) qui enregistre dans un fichier nommé "Date.txt" les trois valeurs d'une Date d ( type défini dans le TD précédent). La fonction retournera le nombre de dates sauvegardées (1 ou 0) ou −1 en cas de problème avec le fichier.

2.2. Ecrire en C une fonction sauveListeDates qui enregistre dans un fichier "ListeDate.txt" un tableau de n Dates. La fonction retournera le nombre de dates sauvegardées ou −1 en cas de problème.

2.3. Ecrire en C une fonction afficheFichierDates qui lit dans un fichier une liste de dates et qui affiche à l'écran chaque date lue sous la forme JJ/MM/AAAA. La fonction retournera le nombre de dates lues ou −1 en cas de problème.

2.4. Ecrire une fonction transfertFichierDates qui effectue la même chose que afficheFichierDates mais les dates, au lieu d'être affichées à l'écran, seront transférées sous la forme JJ/MM/AAAA dans un autre fichier (dont le nom sera passé aussi en paramètre).

2.5. Ecrire une fonction chargeListeDates qui effectue la même chose que afficheListeDates mais les dates, au lieu d'être affichées à l'écran, seront placées dans un tableau de n Dates.
N.B. Que faire s'il y a moins de n dates dans le fichier ? plus de n dates ?