Adloun

sciences numériques et technologie (seconde) · Chapitre 5 · Exercice de TD

La distance et ses cas particuliers

Les fonctions · Fonctions à plusieurs arguments · niveau 3 (difficile)

É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.

100 % gratuit

Essaie le suivant avec le tuteur

Faire l'exercice suivant avec le tuteur

Sans compte : le cours, le premier QCM, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant avec le tuteur →