Adloun

Corrigé CCINP 2025 Informatique PC-PSI — Partie II (début) (Q7 à Q14) : Traces GPX : altitude moyenne et maximale, dénivelés, lissage par moyenne glissante

Sujet officiel du concours CCINP, session 2025, épreuve Informatique PC-PSI. Corrigé rédigé par Ibrahim Alame.

Sujet officiel (PDF, site du concours)

Énoncé

Le GPS du téléphone enregistre régulièrement latitude, longitude (en degrés) et altitude (en mètres) dans un fichier texte au format GPX (figure 1 du sujet : une balise trkpt par point, avec ses attributs lat, lon et ses balises ele, time), que lit le module gpxpy.

Q7. Écrire la ligne qui importe gpxpy.

Après lecture, un itinéraire (type itineraire) est une liste de points (type trpt) : des triplets de flottants (latitude, longitude, altitude), du départ à l'arrivée. La latitude et la longitude repèrent un point du globe (figure 2).

Figure 2 — Repérage d'un point de latitude et de longitude .

La fonction mystere(iti) parcourt l'itinéraire non vide iti, ajoute à s (initialisé à ) l'altitude de chaque point et renvoie s/len(iti).

Q8. Valeur renvoyée et signification pour les points d'altitudes , , , .
Q9. Complexité de mystere en fonction de len(iti).
Q10. Écrire altitude_maximale(iti) (liste non vide).
Q11. Écrire denivele_global(iti) : altitude maximale moins altitude du départ, avec la fonction de Q10.
Q12. Écrire denivele_positif_cumule(iti) : somme des écarts d'altitude positifs entre points successifs.

Avec des altitudes mesurées à tort [0, -2, 2, -2, 2, -2, 2, -2, 2] sur une plage plate, Q12 donne au lieu de . Lissage par moyenne glissante de pas d'une liste de longueur : l'altitude d'indice est remplacée par la moyenne des altitudes d'indices , où . Pour :

départ
lissée

d'où un dénivelé positif cumulé de .

Q13. Écrire alt_glissante(liste_alt, p) qui renvoie la nouvelle liste lissée.
Q14. Complexité de alt_glissante en fonction de et .

Corrigé

Q7. Une seule ligne :


import gpxpy

Les fonctions du module s'appellent alors sous la forme gpxpy.nom_de_fonction(...). (La variante from gpxpy import * importe aussi le module, mais mêle ses noms à ceux du programme : le jury attendait le simple import gpxpy.)

Q8. La boucle additionne les altitudes des quatre points : , puis la fonction renvoie

L'appel affiche 105.0 : un flottant, car l'opérateur / réalise toujours une division flottante en Python 3, même entre entiers. Signification : c'est l'altitude moyenne, en mètres, des points enregistrés de l'itinéraire (moyenne arithmétique sur les points, et non moyenne pondérée par la distance parcourue ou la durée). Les latitudes et longitudes, déballées dans lat et long, ne servent pas.

Q9. La boucle fait tours ; chaque tour coûte un temps constant (accès à iti[i], déballage d'un triplet, une addition), de même que l'initialisation et la division finale. La complexité temporelle est donc linéaire, en .

Q10. Recherche séquentielle du maximum. On initialise avec l'altitude du premier point, et non avec : une randonnée peut se dérouler entièrement à une altitude négative (bords de la mer Morte, polders), et la fonction renverrait alors , valeur absente de la liste.


def altitude_maximale(iti):
    alt_max = iti[0][2]                # altitude du départ (liste non vide)
    for i in range(1, len(iti)):
        if iti[i][2] > alt_max:        # iti[i][2] : altitude du point i
            alt_max = iti[i][2]
    return alt_max

Invariant : au début du tour d'indice , alt_max est le maximum des altitudes des points d'indices à ; en sortie, c'est le maximum de toutes. Coût . Le jury rappelle que l'usage de max n'était pas attendu dans ces premières questions. Testé : 110 sur la liste I1 de Q8, -3 sur trois points d'altitudes , , .

100 % gratuit

La suite du corrigé est sur Adloun

Le corrigé rédigé en entier, question par question, et le tuteur pour poser des questions sur ce sujet.

Voir le corrigé complet, gratuitement

Inscription gratuite en 30 secondes (e-mail, nom d'utilisateur, mot de passe, classe ou profil), sans carte bancaire : arrivée directe sur le corrigé.

Toutes les parties de l'épreuve

Corrigé complet gratuit →