Étude du circuit d une course [tb03] - Exercice Karine Zampieri, Stéphane Rivière, Béatrice Amerein-Soltner Unisciel algoprog Version 8 avril 2015 Table des matières 1 Étude du circuit d une course / pg-circuita1 (alg) 1 1.1 Saisie des altitudes.............................. 1 1.2 Calcul des dénivelés.............................. 2 1.3 Difficulté et dénivelé positif du parcours.................. 3 2 Optionnel : Représentation graphique 5 2.1 Mode graphique................................ 5 2.2 Représentation graphique du circuit..................... 5 1 Étude du circuit d une course / pg-circuita1 (alg) Mots-Clés Tableaux, Algorithmique, Programmation, C++. Requis Structures de base, Structures conditionnelles, Algorithmes paramétrés, Structures répétitives, Schéma itératif, Tableaux. Cet exercice étudie le profil de points caractéristiques (ici les altitudes) le long du trajet d une course cycliste. 1.1 Saisie des altitudes Les données sont stockées dans un tableau pour les étudier. Définissez la constante NMAX (nombre maximum de valeurs) de valeur 100 puis le type Circuit comme étant un tableau d entiers de taille maximale NMAX. Écrivez l en-tête d une procédure saisirpositifs(t,n) qui demande et saisit le nombre de valeurs dans n (entier) puis effectue la saisie de n valeurs entières dans un Circuit t. 1
Unisciel algoprog Étude du circuit d une course / tb03 2 Écrivez la boucle de saisie de n qui doit être compris entre 2 et NMAX (entier). Affichez l invite (où [x] désigne le contenu de x) : Nombre d éléments dans [2..[NMAX]]? Écrivez la boucle de saisie des éléments. Affichez les invites comme dans l extrait d exécution suivant : Nombre d éléments dans [2..[NMAX]]? 10 t[1]? Entier positif ou nul? 125 t[2]? Entier positif ou nul? 10... t[10]? Entier positif ou nul? 42 alg @[circuita1a.alg] Écrivez une procédure test_saisie qui : Déclare un entier nelems et un Circuit altitudes. Effectue la saisie de nelems altitudes dans altitudes (procédure saisirpositifs). Affiche altitudes (procédure affichertab) à titre de vérification. alg @[pg-circuita1a.alg] 1.2 Calcul des dénivelés Les dénivelés sont définis comme suit : Le dénivelé du premier point est l altitude zéro. Celui des autres points est la différence d altitude entre ce point et le point précédent.
Unisciel algoprog Étude du circuit d une course / tb03 3 Écrivez une procédure calculerdeniveles(t,n,dn) qui calcule les dénivelés des n altitudes d un Circuit t dans un Circuit dn. alg @[circuita1b.alg] Copiez/collez la procédure test_saisie en la procédure test_deniveles puis complétezla pour qu elle : Déclare aussi un Circuit nommé deniveles. Calcule les deniveles (procédure calculerdeniveles). Affiche deniveles à la place des altitudes. alg @[pg-circuita1b.alg] 1.3 Difficulté et dénivelé positif du parcours La difficulté du parcours est liée au nombre de montées du parcours. Une montée se mesure entre deux points de mesure d altitude consécutifs. Quel est le tableau (altitudes, dénivelés) que vous utiliserez pour déterminer facilement le nombre de montées? positifs. Le tableau des dénivelés : il suffit de compter le nombre d entiers Écrivez une fonction nmontees(t,n) qui calcule et renvoie le nombre de montées strictes des n points d un Circuit t. Dans l exemple, il y a trois montées strictes.
Unisciel algoprog Étude du circuit d une course / tb03 4 Écrivez une fonction difficulte(ns,netapes) qui, pour un nombre de montées strictes ns (entier) et un nombre d étapes netapes (entier), calcule et renvoie : "Très difficile" si le trajet comporte plus de 75% de montées "Difficile" si plus de 40% de montées "Facile" si plus de 25% de montées "Très facile" sinon Dans l exemple, il y a 42% de montées d où un trajet "Difficile". Validez vos fonctions avec la solution. alg @[circuita1c1.alg] Le dénivelé positif d un parcours est le dénivelé obtenu en ne gardant que les montées. Quel est le tableau (altitudes, dénivelés) que vous utiliserez pour le déterminer facilement? Le tableau des dénivelés : il suffit de cumuler les entiers positifs. Écrivez une fonction denivelepositif(t,n) qui calcule et renvoie le dénivelé positif cumulé de n points d un Circuit t. Dans l exemple, c est 235 mètres. Validez votre fonction avec la solution. alg @[circuita1c2.alg] Copiez/collez la procédure test_saisie en la procédure test_difficulte puis modifiezla pour qu elle : Déclare un entier nelems et un Circuit deniveles. Effectue la saisie de nelems entiers dans deniveles (procédure saisirtab). Calcule et affiche le nombre de montées strictes et la difficulté du parcours. Calcule et affiche le dénivelé positif du parcours.
Unisciel algoprog Étude du circuit d une course / tb03 5 alg @[pg-circuita1c.alg] 2 Optionnel : Représentation graphique Cette section utilise la bibliothèque graphique afin d effectuer une représentation graphique du circuit. 2.1 Mode graphique Afin de réaliser des graphiques, [alg] Passez en mode graphique. Mode standard En mode standard, il y a renversement des axes : le point (0,0) se trouve dans le coin supérieur gauche. 2.2 Représentation graphique du circuit Écrivez une procédure tracercircuit(t,n) qui effectue une représentation graphique de n altitudes d un Circuit t en traçant les montées strictes en rouge et les descentes ou les plats en vert.
Unisciel algoprog Étude du circuit d une course / tb03 6 alg @[circuita1d.alg] Copiez/collez la procédure test_saisie en la procédure test_tracercircuit puis modifiez-la pour qu elle effectue la représentation graphique du parcours. alg @[pg-circuita1d.alg]