Aller au contenu

Index des sujets 2022

Corrigé sujet 36 - Année : 2022

Sujet 36 - 2022

Exercice 1

1
2
3
4
5
def recherche(elt,tab):
    for i in range(len(tab)-1,-1,-1):
        if elt==tab[i]:
            return i
    return len(tab)

Commentaires

Le sujet demande de rechercher la dernière occurrence, la correction proposée ici parcourt la liste à l'envers et renvoie la première occurrence rencontrée. Il faut donc dans ce cas savoir à écrire un parcours à l'envers à l'aide de range. On peut faire aussi parcourir dans le sens normal jusqu'à la fin et mettre la jour l'indice à chaque fois qu'on rencontre la valeur:

    def recherche(tab, n):
    indice_solution = len(tab)
    for i in range(len(tab)):
        if tab[i] == n:
            indice_solution = i
    return indice_solution

Exercice 2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
from math import sqrt   # import de la fonction racine carree

def distance(point1, point2): 
    """ Calcule et renvoie la distance entre deux points. """
    return sqrt((point1[0]-point2[0])**2 + (point1[1]-point2[1])**2) #(1)

assert distance((1, 0), (5, 3)) == 5.0, "erreur de calcul"

def plus_courte_distance(tab, depart):
    """ Renvoie le point du tableau tab se trouvant a la plus     
    courte distance du point depart."""
    point = tab[0]
    min_dist = distance(point,depart) #(2)
    for i in range (1, len(tab)): #(3)
        if distance(tab[i], depart) < min_dist:
            point = tab[i]
            min_dist = distance(tab[i],depart)
    return point
  1. Un point est un tuple (abcisse,ordonne) donc point[0] contient l'abscisse et point[1] l'ordonnée.
  2. On initialise le minimum à la distance entre le point de départ et le premier point de la liste (celui d'indice 0)
  3. Algorithme classique de recherche du minimum

Attention

  1. L'exercice demande aussi d'ajouter une ou des préconditions à la fonction distance. Les points ayant des coordonnées entières on peut proposer : assert type(point[0])==int and type(point[1])==int. On pourrait aussi s'assurer que point est un tuple de longueur 2.
  2. On doit être très prudent en utilisant les tests d'égalité avec des flottants tels que celui de la ligne 7