Adloun

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é

  1. Écrire une fonction distance(xa, ya, xb, yb) renvoyant la distance .
  2. L'utiliser pour écrire est_isocele(xa, ya, xb, yb, xc, yc) renvoyant True si le triangle est isocèle.
  3. Tester sur , , , puis sur trois points alignés.
  4. 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.