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


TP n°2.6

A la fin du TP, envoyer sur l'ENT le programme solution (partielle) de ce problème ainsi que les tests associés

PROBLEME

On veut gérer une liste de relevés climatiques pour différentes stations situées dans différents pays. On nommera climagramme le relevé d'une station, qui comprend : un pays, un nom de ville, ainsi que deux séries de douze températures mensuelles (une série de douze températures maximales et une série de douze températures minimales).
On dispose pour cela d'un fichier fichier de données (à télécharger avec ce sujet) qui contient une liste de climagrammes, un par ligne du fichier.
Ce problème très ouvert nécessiterait beaucoup plus de deux heures pour être traité complètement, mais on disposerait alors d'un outil efficace sur les climagrammes.

L'idée générale de ce TP est d'utiliser cette liste de climagrammes dans un programme afin d'en extraire différentes informations utiles. Différents types, fonctions et procédures, variables seront utilisés à cette fin.

Première partie : mise en place et essai d'un type structuré pour chaque relevé

1.1. Définir un type structuré Climagramme contenant : un nom de Pays, un nom de Station (au plus 20 caractères chacun), un premier tableau de 12 entiers pour les températures Maximales et un deuxième tableau pour les températures Minimales.

1.2. Définir une variable qui contiendra les informations pour la station de Harare :
Climagramme H={"Zimbabwe","Harare", {26,26,26,26,24,22,22,24,28,28,28,26},{16,16,15,13,9,7,7,9,12,15,16,16}};
N.B. Le type que vous avez défini devra être compatible avec cette variable globale.

1.3. Créer une fonction qui utilise la variable globale H pour afficher sur des lignes successives :
– le nom du pays,
– le nom de la station,
– la liste des températures mensuelles moyenne (par exemple (26+16)/2=21 °C pour janvier),
– la température annuelle moyenne,
– le nom des mois ayant la température minimale et la température,
– le nom des mois ayant la température maximale et la température.

Deuxième partie : chargement du fichier de plusieurs relevés et vérifications

2.1. Définir un tableau nommé TCG de 200 Climagrammes, cette TailleMaximale de 200 étant définie par une macro-instruction.

2.2. Définir une variable Mois composée de douze chaines de caractères "JAN", "FEV", "MAR", "AVR", "MAI", "JUN", "JUL", "AOU", "SEP", "OCT", "NOV", et "DEC", pour les noms des mois de l'année sous forme abrégé. Cette variable sera utilisé pour l'affichage.

2.3. Définir une fonction Charger :
– Elle prend en paramètres : un tableau TCG de Climagrammes, sa taille maximale tm, et un nom de fichier S.
– Elle télécharge dans TCG les N≤tm climagrammes contenus dans le fichier de nom S. TCG est modifié par effet de bord.
– Elle retourne le nombre de stations placées dans TCG, ou (–1) en cas de problème.
N.B. En cas de difficulté pour programmer cette fonction, demandez de l'aide à votre encadrant, afin de ne pas rester bloqué.

2.4. Définir une procédure Afficher :
– Elle prend en paramètres : un climagramme G et un caractère k.
– Elle affiche G en réservant 4 colonnes pour chaque température : la mise en page de l'affichage dépend de la valeur de k :
— si k='p', l'affichage de G se fera sur trois lignes, la première avec le nom du pays et le nom de la station, la deuxième avec les températures maximales, et la troisième avec les températures minimales,
— si k='m', l'affichage de G se fera sur trois lignes, la première donnant le nom des mois (donnés par la variable globale Mois) et les deux suivantes les températures maximales puis minimales, le tout correctement aligné verticalement à l'écran,
— pour toute autre valeur de k, l'affichage de toutes les informations de la station se fera sur une ligne.

2.5. Définir une procédure TesterChargement :
N.B. Cette fonction est destinée aux tests de progression mais ne devra pas être utilisée pour la version finale du TP (trop de lignes affichées).
– Elle prend en paramètres : un tableau TCG de Climagrammes et sa taille N.
– Elle affiche tous ces climagrammes à raison d'une ligne par station.

2.6. Dans le programme principal, effectuer le téléchargement et le vérifier en affichant les deux premiers relevés et les deux derniers, chacun sur une ligne.

Troisième partie : exploitation des données

Créez dans l'ordre que vous voulez les fonctions suivantes pour exploiter les données. Choisissez les informations que vous souhaiteriez avoir et créer les fonctions nécessaires pour y répondre. Par exemple : quand et où dois-je partir pour avoir le plus chaud ? le plus froid ? des températures variant peu dans l'année ? Pour un pays donnée quelle est la meilleure destination selon mes critères ? etc.
A mesure que vous créez des fonctions, tester-les dans le programme principal, dont le menu s'agrandira à mesure que vous ajoutez des fonctionnalités.

3.1. Définir une fonction Annuel :
– Elle prend en paramètre un tableau TCG de climagrammes et sa taille N.
– Elle crée dynamiquement (avec malloc) un tableau TAN de N valeurs.
– Elle retourne ce tableau TAN de N valeurs correspondant aux températures annuelles des différentes stations de TCG (càd TAN[i] contient la température annuelle de TCG[i]).

3.2. Définir une fonction StationMax :
– Elle prend en paramètre un tableau TCG de climagrammes, sa taille N, et une température T en °C.
– Elle retourne la liste des noms de station dont la température dépasse au moins une fois T.

3.3. Définir une fonction IndiceStation :
– Elle prend en paramètre un tableau TCG de climagrammes et sa taille N.
– Elle retourne l'indice dans TCG de la station, où (−1) si elle n'y est pas.

Pour aller plus loin (A faire hors TP)

4.1. Fonction ChercherPays :
– Elle prend en paramètres : un caractère k, un tableau TCG de climagrammes et sa taille N, un indice x compris entre 0 et N–1.
– Elle retourne le premier indice de TCG, à partir de TCG[x], où le nom du pays commence par la lettre k, ou bien (–1) en cas d'échec.

4.2. Fonction AfficherPays :
– Elle prend en paramètres : un caractère k, un tableau TCG de climagrammes et sa taille N.
– Elle affiche, en utilisant la fonction précédente, la liste des noms de station de TCG dont le nom de pays commence par la lettre K ainsi que leur température annuelle.

4.3. Fonction SauverMax.
Elle sauvegarde dans un fichier la liste des stations, avec nom de pays, nom de ville, et température moyennes données par le tableau TAN.