Aller au contenu

Ep 18

le document

l'algorithme

Issue de : 23-NSI-09⚓

coquille dans le sujet

Dans exercice 2 : ajouter None dans les exemples

EXERCICE 1⚓

Programmer la fonction multiplication, prenant en paramĂštres deux nombres entiers n1 et n2, et qui renvoie le produit de ces deux nombres.

Les seules opĂ©rations autorisĂ©es sont l’addition et la soustraction.

Exemples :

🐍 Script Python
>>> multiplication(3,5)
15
>>> multiplication(-4,-8)
32
>>> multiplication(-2,6)
-12
>>> multiplication(-2,0)
0

RĂ©ponse

Complétez le code ci-dessous

###
#Mettre votre code icibksl-nlbksl-nl



Solution

###
def multiplication(n1, n2):bksl-nl if n1 < 0:bksl-nl return -multiplication(-n1, n2)bksl-nl if n2 < 0:bksl-nl return -multiplication(n1, -n2)bksl-nl resultat = 0bksl-nl for py-und in range(n2):bksl-nl resultat += n1bksl-nl return resultatbksl-nlbksl-nltry:bksl-nl assert multiplication(3,5) == 15bksl-nl assert multiplication(-4,-8) == 32bksl-nl assert multiplication(-2,6) == -12bksl-nl assert multiplication(-2,0) == 0bksl-nl print('Tout semble correct 👍')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đŸ€”')bksl-nlbksl-nlbksl-nl



EXERCICE 2⚓

Soit tab un tableau non vide d'entiers triés dans l'ordre croissant et n un entier.

La fonction chercher ci-dessous doit renvoyer un indice oĂč la valeur n apparaĂźt dans tab si cette valeur y figure et None sinon.

Les paramĂštres de la fonction sont :

  • tab, le tableau dans lequel s'effectue la recherche ;
  • n, l'entier Ă  chercher dans le tableau ;
  • i, l'indice de dĂ©but de la partie du tableau oĂč s'effectue la recherche ;
  • j, l'indice de fin de la partie du tableau oĂč s'effectue la recherche.

L’algorithme demandĂ© est une recherche dichotomique rĂ©cursive.

Recopier et compléter le code de la fonction chercher suivante :

🐍 Script Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
def chercher(tab, x, i, j):
    '''Renvoie l'indice de x dans tab, si x est dans tab, 
    None sinon.
    On suppose que tab est trié dans l'ordre croissant.'''
    if i > j:
        return None
    m = (i + j) // ... 
    if ... < x: 
        return chercher(tab, x, ... , ...) 
    elif tab[m] > x:
        return chercher(tab, x, ... , ...) 
    else:
        return ...
L'exécution du code doit donner :

🐍 Script Python
>>> chercher([1, 5, 6, 6, 9, 12], 7, 0, 10)
None
>>> chercher([1, 5, 6, 6, 9, 12], 7, 0, 5)
None
>>> chercher([1, 5, 6, 6, 9, 12], 9, 0, 5)
4
>>> chercher([1, 5, 6, 6, 9, 12], 6, 0, 5)
2
RĂ©ponse

Complétez le code ci-dessous

###
def chercher(tab, n, i, j):bksl-nl if i < 0 or j > len(tab) :bksl-nl return Nonebksl-nl if i > j :bksl-nl return Nonebksl-nl m = (i + j) // ...bksl-nl if ... < n :bksl-nl return chercher(tab, n, ... , ...)bksl-nl elif ... > n :bksl-nl return chercher(tab, n, ... , ... )bksl-nl else :bksl-nl return ...bksl-nl



Solution

###
def chercher(tab, n, i, j):bksl-nl if i < 0 or j > len(tab) :bksl-nl return Nonebksl-nl if i > j :bksl-nl return Nonebksl-nl m = (i + j) // 2bksl-nl if tab[m] < n :bksl-nl return chercher(tab, n, m+1 , j)bksl-nl elif tab[m] > n :bksl-nl return chercher(tab, n, i , m-1 )bksl-nl else :bksl-nl return mbksl-nlbksl-nltry:bksl-nl assert chercher([1, 5, 6, 6, 9, 12], 7, 0, 10) == Nonebksl-nl assert chercher([1, 5, 6, 6, 9, 12], 7, 0, 5) == Nonebksl-nl assert chercher([1, 5, 6, 6, 9, 12], 9, 0, 5) == 4bksl-nl assert chercher([1, 5, 6, 6, 9, 12], 6, 0, 5) == 2bksl-nl print('Tout semble correct 👍')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đŸ€”')bksl-nlbksl-nlbksl-nl