Durée : 1h30. Cours, notes personnelles et documents distribués en cours autorisés.
Dans ce sujet, nous allons traiter des parties d'un programme scientifique, avec affichage graphique (on se limitera à une courbe). On suppose disposer d'une bibliothèque graphique simple, utilisable à condition d'inclure <graph.h> dans le programme. Cette bibliothèque comporte (entre autres) les fonctions suivantes :
Les coordonnées dans la fenêtre graphique (quelle que soit sa taille, et même son rapport hauteur/largeur) vont de 0 à 100 (sur x 0 à gauche, 100 à droite; sur y 0 en bas, 100 en haut).
Question 1 : Les coordonnées des points que nous désirons tracer ne sont par contre pas entre 0 et 100. Supposons disposer de 4 variables de type float nommées xmin, xmax, ymin, ymax définissant les limites extrêmes des points que l'on désirera tracer (supposées déjà connues), écrivez les quelques instructions qui à partir de deux float x et y, coordonnées d'un point de la courbe que l'on veut tracer (vous vérifierez qu'ils sont bien dans ces limites) calculent xprim et yprim, leur projection dans la fenêtre graphique (donc entre 0 et 100).
Remarque : le calcul est simple, on utilise ce que certains appellent une règle de 3, un produit en croix, une proportionalité, une projection affine, une transformation linéaire...
Question 2 : Décomposez le calcul précédent en deux fonctions nommées projete_x et projete_y qui font les mêmes calculs, en recevant 3 arguments (pour la première, x, xmin, xmax) et retournent la coordonnée projetée (pour la première, xprim).
Question 3 : Déclarez un tableau 100 flottants, nommé tab_x. Supposons que ce tableau soit déjà initialisé (c'est à dire que les valeurs y ont déjà été écrites), et que l'entier nb désigne le nombre de valeurs réellement utilises du tableau (inférieur à 100). Ecrivez le morceau de programme qui recherche la plus petite valeur du tableau, et la plus grande (appellées xmin et xmax).
Question 4 : A l'aide des fonctions précédentes, écrivez le programme qui, à partir de deux tableaux de nb coordonnées nommées tab_x et tab_y (déjà saisis) trace la courbe reliant tous ces points (reliés par des segments de droites). Vous n'êtes pas obligé de recopier toutes les lignes de programme déjà écrites plus haut, utilisez des couleurs ou dites par exemple "texte de la question 2 en remplaçant X par Y". Pour améliorer le résultat (si vous en avez le temps), laissez un peu de marge entre la courbe et le bord de la fenêtre (5% ), tracez les axes (s'ils sont dans la fenêtre, évidement) et graduez les (par pas entiers judicieusement choisis, pour avoir entre 10 et 25 graduations).
Remarques : vous pouvez traiter les questions dans le désordre (mais numérotez-les). Si les fonctions ne vous inspirent pas, vous pouvez tout écrire dans le programme principal "main", mais la note sera plus faible. Comme vous l'avez peut-être remarqué, il faut vous dépêcher ! Pour chaque question vous déclarerez toutes les variables nécessaires, et vous découperez si possible votre programme en sous-programmes
pour retourner au sommaire des sujets d'examen, cliquez ici
Patrick TRAU, ULP - IPST juin 02