Aller au contenu

Index des sujets 2023

Corrigé sujet 26 - Année : 2023

Sujet 26 - 2023

Exercice 1

1
2
3
4
5
6
7
8
def multiplication(n1,n2):
    produit=0
    for i in range(abs(n1)):
        produit += abs(n2)
    if (n1>0 and n2<0) or (n1<0 and n2>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. On peut aussi proposer une solution n'utilisant pas la valeur absolue :
    def multiplication(n1, n2):
    p = 0
    if n1 > 0 :
        for i in range(n1):
            p = p + n2
    else:
        for i in range(-n1):
            p = p - n2
    return p
    

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.