Aller au contenu

Index des sujets 2022

Corrigé sujet 21 - Année : 2022

Sujet 21 - 2022

Exercice 1

1
2
3
4
5
6
7
8
def multiplication(a,b):
    produit=0
    for i in range(abs(a)):
        produit += abs(b)
    if (a>0 and b<0) or (a<0 and b>0): 
        return -produit
    else:
        return produit

Commentaires

  1. On peut rappeler la règle des signes pour un produit :
    • un produit est négatif si les deux facteurs ne sont pas de même signe (ligne 5)
    • et positif sinon.
  2. Si a et b sont deux entiers positifs : $$ a \times b = \underbrace{b + b + \dots + b}_{a \quad \mathrm{termes}} $$
  3. L'énoncé pourrait aiguiller vers l'utilisation de abs (valeur absolue) pour traiter les problèmes de signe.

Exercice 2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
def dichotomie(tab, x):
    """
        tab : tableau d’entiers trié dans l’ordre croissant
        x : nombre entier
        La fonction renvoie True si tab contient x et False sinon
    """

    debut = 0 
    fin = len(tab) - 1
    while debut <= fin:
        m = (debut+fin)//2 #(1)
        if x == tab[m]:
            return True
        if x > tab[m]:
            debut = m + 1
        else:
             fin = m-1 #(2)         
    return False
  1. Calcul de l'indice se trouvant "au milieu" entre debut et fin.
  2. Ici x < tab[m] (la cas d'égalité est traité avant), donc l'indice de fin de recherche est avant m.