CCMP IPT 2018 - Corrigé - Q1 à Q14.
Remarques générales:
- Tous les résultats doivent être justifiés !
- 1 octect = 8 bits
- Ne pas inventer de syntaxe Python, cela donne très mauvaise impression.
- Pour les opérations sur les listes, il est important de ne pas confondre, indices et valeurs.
import ...sert pour utiliser un module pas lire un fichierimport donnees.txtn'a donc aucun sens.
Q1 En te tenant, pas compte de la prmière ligne, avec un échantillonage de 2hz, il y a 2400 enregistrements en 20 minutes (\(2\times 60 \times 20\)). Avec 8 octets par enregistrements, on a donc une taille des données de 20 minutes qui est de 19,2Ko.
Q2 Pour une campage de 15 jours, avec 48 plages de 20 minutes par jour, nous avons (\(15 \times 48 \times 19,2 ko\)). Soit un peu moins de 14000Ko donc envion 14Mo. Une carte de capacité de 1Go est amplement suffisante.
Q3 Chaque ligne nécessite 8 octets avec la précision actuelle, en retirant un chiffre par ligne, on retire 1 octet. L'économie de mémoire sera donc de 1/8, un peu moins de 2Mo sur les 15 jours.
Q4
| Python | |
|---|---|
Q5 Par lecture graphique on considère :
- \(H_1 \approx 9\)
- \(H_2 \approx 8,9\)
- \(H_3 \approx 6\)
- \(T_1 \approx 12\)
- \(T_2 \approx 13\)
Q6
| Python | |
|---|---|
remarque: Il est possible d'utiliser la fonction sum de Python sauf quand cela est clairement indiqué. Dans ce cas il n'y a pas de boucle et la fonction peut devenir :
Q7
On utilise la methode des trapèzes avec \(\Delta_t = 0.5\).
| Python | |
|---|---|
Et pour la moyenne précise:
| Python | |
|---|---|
Q8
| Python | |
|---|---|
remarque on a ici un parcourt séquentiel de la liste en compléxité \(\mathcal{O}(n)\).Un code plus efficace fonctionnerait par recherche dichotomique.
Q9 Pour obtenir la compléxité en \(\mathcal{O}(1)\) dans le meilleur des cas on parcourt la liste en commençant par la fin. Il faut aussi bien sûr que la moyenne soit déjà calculée, sinon la complexité sera en \(\mathcal{O}(n)\) même dans le meilleur des cas.
Q10
| Python | |
|---|---|
Q11
| Python | |
|---|---|
Q12
Q13
| Python | |
|---|---|
Q14
Pour trier toute la liste, les arguments g et d doivent prendre les valeurs respectivement 0 et len(l) - 1 (indices des premier et dernier élément de la liste).
Voici le code complété :
| Python | |
|---|---|
Remarque
Si on initialise pivot à g, come cela se fait souvent pour le tri rapide, la condition liste[i][0] < pivot du deuxième while ne sera jamais vraie. En effet comme i est inialisé à g il y a égalité entre les deux termes comparés et donc pas d'infériorité stricte.
La boucle du troisième while va décrémenter j jusuq'à l'indice le plus à droite du terme dont liste[j][0] est inférieur au pivot. Si j reste supérieur à i, alors ce terme sera échangé avec le pivot, et on appellera donc triRapide(liste, i, d) ce qui va permettre de trier la liste.
Et les deux dernières lignes
ne seront donc jamais exécutées, c'est ce que l'on appelle du code mort.
La liste sera pourtant bien triée mais ce n'est pas un tri rapide où on utilise diviser pour régner en triant les deux parties de la partition autour du pivot.