La distance et ses cas particuliers
Exercice de TD · niveau 3 (difficile) · sciences numériques et technologie (seconde), chapitre 5 — Les fonctions · Fonctions à plusieurs arguments
Énoncé
- Écrire une fonction
distance(xa, ya, xb, yb)renvoyant la distance . - L'utiliser pour écrire
est_isocele(xa, ya, xb, yb, xc, yc)renvoyantTruesi le triangle est isocèle. - Tester sur , , , puis sur trois points alignés.
- Pourquoi vaut-il mieux comparer les carrés des distances ?
Corrigé
1. et 2.
def distance(xa, ya, xb, yb):
return ((xb - xa)**2 + (yb - ya)**2) ** 0.5
def est_isocele(xa, ya, xb, yb, xc, yc):
ab = distance(xa, ya, xb, yb)
ac = distance(xa, ya, xc, yc)
bc = distance(xb, yb, xc, yc)
return ab == ac or ab == bc or ac == bc
3.
print(est_isocele(0, 0, 4, 0, 2, 3)) # True : AC = BC = sqrt(13)
print(est_isocele(0, 0, 1, 1, 2, 2)) # True aussi !
Le second cas est instructif : les trois points sont alignés, il n'y a pas de triangle, et pourtant la fonction répond True puisque . Une fonction juste sur sa définition peut répondre à côté de la question posée — il faudrait ajouter un test d'alignement.
4. Comparer les carrés évite la racine carrée, donc les flottants approchés. Avec distance, est calculé deux fois : les deux résultats coïncident ici, mais rien ne le garantit en général, et deux longueurs égales pourraient être déclarées différentes. En travaillant sur , on ne manipule que des entiers quand les coordonnées le sont, et la comparaison est exacte.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.