Aller au contenu

Ep 09

▶ TĂ©lĂ©charger le sujet en pdf.

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-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 :

L'exécution du code doit donner :

🐍 Script Python
    >>> chercher([1, 5, 6, 6, 9, 12], 7, 0, 10)
    >>> chercher([1, 5, 6, 6, 9, 12], 7, 0, 5)
    >>> 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-nl